[关闭]
@agpwhy 2022-06-28T07:47:14.000000Z 字数 1546 阅读 203

王胖的生信笔记第四十六期-蓝鸟大V发推节律

我们实验室有一块牌子就是睡眠相关的有人在做节律相关的工作,前段时有放过圈图可以展示相关的工作,其实想一下雷达图也可以的。

6

就看到一位zhiiiyang老师在tidytuesday上发的教程(github.com/zhiiiyang/tidytuesday/tree/master/2019-12-25_radarplot ),就借花献佛改一下给大家瞅瞅。

数据准备

这里用的是蓝鸟大v的发推数据,使用的是rtweet这个包。这个包调用爬虫api的,所以需要你有一个蓝鸟账户。这里不介绍这些,只讲你在给这个包授权完之后的操作。

  1. library(rtweet)
  2. library(lubridate)
  3. library(dplyr)
  4. library(tidyr)
  5. library(ggplot2)
  6. library(stringr)
  1. targeted_user <- "elonmusk" # 选取蓝鸟新老板马爱龙作为研究对象
  2. tweet_list <- get_timeline(targeted_user,n = 3000) #拉取3000条他的最新发推
  1. radar_df <- tweet_list %>%
  2. mutate(created_at = with_tz(created_at, tzone = "America/Los_Angeles"), # 由于马爱龙玩儿的主要是西海岸
  3. hour = stringr::str_pad(hour(created_at), 2, pad = "0"),
  4. mins = minute(floor_date(created_at, "30 mins"))) %>%
  5. unite(group, c("hour", "mins")) %>%
  6. group_by(group) %>%
  7. summarise(tweets = n()) %>%
  8. select(group, tweets)

得到一个类似这样的表格

group tweets
00_0 10
00_30 6
01_0 39
01_30 1

每半小时的发推数

然后使用这个把时间转换成数字然后做成表格

  1. radar_df_com <- radar_df %>%
  2. mutate(group = (as.numeric(as.factor(group))- 1)/2) %>%
  3. arrange(group)
  4. radar_df_com<- rbind(radar_df_com,
  5. data.frame(group = 24, radar_df_com[radar_df_com$group==0, "tweets"]))

开始做图

做图其实就是ggplot加上极坐标变换(其实做起来还是有点难度的,感谢zhiiyang老师的代码)

  1. ggplot(radar_df_com, aes(x = group, y = log(tweets))) +
  2. geom_point(size = 4, color = "Red") +
  3. geom_polygon(color = "darkslateblue", fill=NA) +
  4. coord_polar(direction = 1) +
  5. ggtitle(paste0("Tweet frequency of @",targeted_user_list[i]," by time of day")) +
  6. ylab("log(Tweet(count))") +
  7. xlab("Time of Day") +
  8. scale_x_continuous(breaks = c(0, 6, 12, 18)) +
  9. theme_minimal() +
  10. theme(axis.text.y=element_blank(),
  11. axis.title = element_text(face="italic"),
  12. axis.text.x = element_text(size = 15))

最后放出效果图。

比尔盖茨的发推节律

radar_billgates

马爱龙的发推节律

radar_elonmusk

坚哥的发推节律

radar_zlj517

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注