@agpwhy
2022-06-28T07:47:14.000000Z
字数 1546
阅读 203
我们实验室有一块牌子就是睡眠相关的有人在做节律相关的工作,前段时有放过圈图可以展示相关的工作,其实想一下雷达图也可以的。
就看到一位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))
最后放出效果图。
比尔盖茨的发推节律
马爱龙的发推节律
坚哥的发推节律