R + Spotify: изучаем свою активность
Автор: Юрий Тукачев (@psych2016)
Хороший пример построения тепловой карты. Скачать данные по истории прослушивания можно в аккаунте Spotify, в разделе "Privacy settings" > "Download your data". Среди наборов данных будет "Streaming history for the past year".
streamHistory <- fromJSON("MyData/StreamingHistory0.json", flatten = TRUE)
#Форматируем дату и добовляем время, день недели
mySpotify <- streamHistory %>%
as_tibble() %>%
mutate_at("endTime", ymd_hm) %>%
mutate_at("endTime", format, tz = "Asia/Yekaterinburg") %>%
mutate_at("endTime", as_datetime) %>%
mutate(date = floor_date(endTime, "day") %>% as_date,
seconds = msPlayed / 1000,
minutes = seconds / 60,
weekday = weekdays(date, abbreviate = TRUE),
hour = hour(endTime))
mySpotify %>%
mutate(weekday = factor(weekday, levels = rev(c("Пн","Вт","Ср","Чт","Пт","Сб","Вс")))) %>%
group_by(weekday, hour) %>%
summarize(minutesListened = sum(minutes)) %>%
ggplot(aes(x = hour, weekday, fill = minutesListened)) +
geom_tile(color = "white", width = 0.98, height = 0.98) +
scale_y_discrete(expand = c(0,0)) +
scale_x_continuous(breaks = seq(0,24,1), expand = c(0,0)) +
scale_fill_gradient("Минут прослушивания", low = "yellow", high = "red") +
labs(x = "Время дня", y = "", caption = "Данные: Spotify Визуализация: Юрий Тукачев") +
ggtitle("Когда я чаще всего слушал музыку на Spotify за последний год?",
"Еженедельная активность прослушивания по часам дня недели") +
guides(fill = guide_colorbar(title.position = 'top', title.hjust = .5,
barwidth = unit(15, 'lines'), barheight = unit(.5, 'lines'))) +
theme(plot.title.position = "plot", text = element_text(size = 14, family = "Roboto Mono"),
plot.caption.position = "plot",
plot.caption = element_text(color = "gray"),
plot.subtitle = element_text(color = "gray"),
legend.position = "top",
panel.background = element_blank(),
plot.margin = margin(25, 25, 10, 25),
axis.ticks = element_blank())
#заметки_по_R