@agpwhy
2022-06-28T07:47:14.000000Z
字数 1546
阅读 294
我们实验室有一块牌子就是睡眠相关的有人在做节律相关的工作,前段时有放过圈图可以展示相关的工作,其实想一下雷达图也可以的。

就看到一位zhiiiyang老师在tidytuesday上发的教程(github.com/zhiiiyang/tidytuesday/tree/master/2019-12-25_radarplot ),就借花献佛改一下给大家瞅瞅。
这里用的是蓝鸟大v的发推数据,使用的是rtweet这个包。这个包调用爬虫api的,所以需要你有一个蓝鸟账户。这里不介绍这些,只讲你在给这个包授权完之后的操作。
library(rtweet)library(lubridate)library(dplyr)library(tidyr)library(ggplot2)library(stringr)
targeted_user <- "elonmusk" # 选取蓝鸟新老板马爱龙作为研究对象tweet_list <- get_timeline(targeted_user,n = 3000) #拉取3000条他的最新发推
radar_df <- tweet_list %>%mutate(created_at = with_tz(created_at, tzone = "America/Los_Angeles"), # 由于马爱龙玩儿的主要是西海岸hour = stringr::str_pad(hour(created_at), 2, pad = "0"),mins = minute(floor_date(created_at, "30 mins"))) %>%unite(group, c("hour", "mins")) %>%group_by(group) %>%summarise(tweets = n()) %>%select(group, tweets)
得到一个类似这样的表格
| group | tweets |
|---|---|
| 00_0 | 10 |
| 00_30 | 6 |
| 01_0 | 39 |
| 01_30 | 1 |
每半小时的发推数
然后使用这个把时间转换成数字然后做成表格
radar_df_com <- radar_df %>%mutate(group = (as.numeric(as.factor(group))- 1)/2) %>%arrange(group)radar_df_com<- rbind(radar_df_com,data.frame(group = 24, radar_df_com[radar_df_com$group==0, "tweets"]))
做图其实就是ggplot加上极坐标变换(其实做起来还是有点难度的,感谢zhiiyang老师的代码)
ggplot(radar_df_com, aes(x = group, y = log(tweets))) +geom_point(size = 4, color = "Red") +geom_polygon(color = "darkslateblue", fill=NA) +coord_polar(direction = 1) +ggtitle(paste0("Tweet frequency of @",targeted_user_list[i]," by time of day")) +ylab("log(Tweet(count))") +xlab("Time of Day") +scale_x_continuous(breaks = c(0, 6, 12, 18)) +theme_minimal() +theme(axis.text.y=element_blank(),axis.title = element_text(face="italic"),axis.text.x = element_text(size = 15))
最后放出效果图。
比尔盖茨的发推节律

马爱龙的发推节律

坚哥的发推节律
