查看原文
其他

圈圈圈圈图!

阿越就是我 医学和生信笔记 2023-06-15

关注公众号,发送R语言Python,获取学习资料!

  Stay hungry, stay foolish!   

圈圈图(或者叫网络图?)前面介绍过很多次了,详情请见:

今天再来学习下圈圈图的画法,其实就是用ggraph包,没什么特别的,看到这个图形千万不要觉得太高大上,不过就是换了一个layout而已!

image-20220506160843447

但是不得不说,这个大图嵌小图的表现方式真的很震撼,圈圈再多点看得人密集恐惧症都犯了!

画这个图的数据来源找不到了,我是在一个大佬的Github[1]找的,但是具体数据来源以及数据说明并没有找到。根据图片推测应该是老外每天、每小时发多少推这种数据。

既然是用ggraph画图,那就先要把数据转换成合适的格式。看到这个图你千万不要害怕,因为数据格式和之前推文里介绍的网络图的格式一模一样!毕竟都是一个包画的。

加载R包和数据

用到的R包很多,没安装的记得先安装!

library(tidyverse)
library(here)
library(ggraph)
library(igraph)
library(patchwork)
library(lubridate)
library(wesanderson)

加载数据,这个原始数据有两张csv文件,purrr包可以直接读取并合并!

tweets_w1w2 <- list.files(path = here("2021""data"), full.names = TRUE) %>% 
  map_df(~read_csv(.)) %>% 
  mutate(hour = hour(created_at))

数据处理

接下来就是数据处理,主要是变成一个from、to的格式,然后使用函数转化为ggraph需要的格式!

tweet_tree0 <- data.frame(from = "day", to = 0:23)

tweet_tree1 <- tweets_w1w2 %>%
  filter(day == 13) %>% 
  filter(is_retweet) %>%
  summarise(from = hour, to = retweet_status_id)

tweet_tree2 <- tweets_w1w2 %>% 
  filter(day == 13) %>% 
  filter(is_retweet) %>% 
  summarise(from = retweet_status_id, to = status_id)

# 合并成一个
edges <- rbind(tweet_tree0, tweet_tree1, tweet_tree2)

# 转换格式
mygraph <- graph_from_data_frame(edges)

画图

接下来就是画图,画图就很简单了。

# 先自定义几个颜色和标签
pal <- wes_palette("Zissou1")
depth_lbl <- c("day""hour""tweet""retweets")

# 画图,前两行代码是主要的,其余的都是修饰图形
ggraph(mygraph, layout = 'circlepack') + # 这个circlepack就是专门画这种图形的
  geom_node_circle(aes(fill = factor(depth)), color = "grey30", size = 0.15) +
  scale_fill_manual(values = pal, labels = depth_lbl) +
  labs(fill = NULL, title = "Day 13") +
  coord_fixed() +
  theme_void(base_family = "Fira Sans") +
  theme(plot.title = element_text(hjust = 0.5))

然后图就出来了,就是这么简单!

image-20220506160843447

难的还是数据处理整理的过程,以及对一份数据如何选择合适的图标展示的问题!这个需要大家多多学习才行。

参考资料

[1]

Github: https://github.com/gkaramanis/30DayChartChallenge



以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发

欢迎在评论区留言或直接添加我的微信!

 
End



欢迎关注公众号:医学和生信笔记

医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!


往期回顾

R语言和医学统计学(合辑)


超详细的R语言热图之complexheatmap系列6


R语言画好看的聚类


使用R语言美化PCA

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存