Візуалізація: Статистика прослуховування музики: відкриття проти повторення

Нещодавно дивився відео з конференції Plotcon, де один з працівників Spotify розповідав, як вони аналізують дані прослуховування музики своїх користувачів, та в який спосіб вони ці дані візуалізують. Там багато цікавого, але зокрема мені подумалось, що я можу спробувати відтворити візуалізацію, яка розкладає всі сесії прослуховування музики на предмет відкриття нових композицій та повторення вже відомих.

cтатистика прослуховування музики: відкриття проти повторення

cтатистика прослуховування музики: відкриття проти повторення

Задачі, котрі тут стояли: отримати всі дані щодо прослуховування музики (для цього я використав API сервісу Last.fm, спочатку вправлялвся на своїх даних, потім взявся за своїх друзів); розбити прослуховування на сесії (тут був простий критерій - якщо між двома композиціями є пауза більше ніж в 15 хвилин, тоді вважається, що ці композиції належать до двох окремих сесій; звісно, цю класифікацію ще можна покращувати); класифікувати всі треки на “новий” та “вже відомий” (тут є нюанс, що спершу всі треки класифікуються як “нові”).

Принцип дуже простий - кожна лінія це окрема сесія прослуховування музики. Довжина лінії відповідає кількості композицій у сесії. Положення точки, за якою відмальовується лінія, на осі Y відповідає порядковому номеру композиції у сесії. Положення точки, за якою відмальовується лінія, на осі X визначається статусом “нова” чи “вже відома” композиція. Якщо користувач слухає композицію, котрої ще нема в його базі, лінія зміщується на одну позицію вправо. Якщо користувач слухає композицію, котра вже є в його базі, лінія зміщується на одну позицію вліво. Колір лінії присвоюється на підставі статусу сесії - “відкриття” чи “повторення”, тобто на підставі того, яких композицій - нових чи вже відомих - було більше у цій сесії.

Суто з технічної точки зору для мене стало приємним відкриттям, що у бібліотеці ggplot2 можливо використовувати geom_line() в поєднанні з position=‘jitter’. Ця комбінація власне і визначила значною мірою вигляд візуалізації.


Код на GitHub

Відео - Edward Lee, Visualizing 100,000,000 Music Fans