查看原文
其他

当病毒R包nCov-2019遇上动图gganimate

及时雨 吉时逢雨 2023-01-29

参考如下

gganimate教程

1. https://www.jianshu.com/p/d9ecf19b810a

2. 如何让你的基因放烟花


新冠病毒R包教程+支持引用  更新后,数据结构或变化

1. nCov2019:你又该升级了

2. 检索疫情数据的R包来了!

3. 疫情地图全搞定,小白都会画!


R包安装

# R包安装# install.packages("devtools") #安装github中的包library(devtools) install_github("thomasp85/gganimate") #动态图R包
remotes::install_github("GuangchuangYu/nCov2019") #病毒R包



准备数据

library(nCov2019)x = load_nCov2019() #历史数据,第一列是时间time(x) # 数据更新时间a=x[] #全国累计数据 第一列是time

a长这样



比如湖北一个省,下面有武汉、荆州、十堰……我们需要把同一个省的所有地区数据累计合并起来



dplyr包的summarise和group_by 、sum搭配 

获得 各个省市每天的数据

library(dplyr)b= summarise(group_by(a,time,province), sum(cum_confirm), sum(cum_dead), sum(cum_heal))
colnames(b)[3:5]=c('confirm','dead','heal') #修改列名
b=subset(b,province!='湖北')  

由于湖北数据太大,所以去掉湖北加以展示


数据已经准备就绪




开始画图

library(ggplot2)#静态图p3=ggplot(b, aes(x =heal, y=confirm, size = dead, colour = province)) + geom_point(show.legend =T, alpha = 0.8) + scale_color_viridis_d() + #色盲友好颜色 scale_size(range = c(2, 8)) + # scale_x_continuous(breaks =seq(-10,400,50))+ # scale_x_log10() + labs(x = "治愈", y = "确诊")p3


x轴是治愈人数、y轴是确诊人数,圆圈大小表示死亡人数,颜色代表不同省市



凌波微步wake_length = 0.4 应该是残影时间

library(gganimate)  #加载动图R包#动态p3 + transition_time(time) + labs(title = "日期: {frame_time}")+ #标签  shadow_wake(wake_length = 0.4, alpha = FALSE)  #残影


轨迹shadow_mark(alpha = 0.3, size = 0.5) 透明度、尺寸

p3 + transition_time(time) + labs(title = "日期: {frame_time}")+ #标签 shadow_mark(alpha = 0.3, size = 0.5) #轨迹

有谁会记得这个世界它来过……





折线图


x轴是时间、y轴是确诊人数

p5=ggplot(b,aes(x =time, y=confirm, color = factor(province))) + geom_line(size=1)+ scale_color_viridis_d() + scale_size(range = c(2, 8)) + labs(x = "时间", y = "确诊")p5



万箭齐发transition_reveal(time)

p5 +geom_point() + transition_reveal(time)

如果把geom_point()去掉,折线就没有前段的点了




省太多了,颜色区分度不够,就只让文字在动

p6=ggplot(b,aes(x =time, y=confirm, color = factor(province))) + scale_y_continuous(breaks =seq(0,1500,50))+ geom_text(aes(x =time, y=confirm, label =province)) + labs(x = "时间", y = "确诊")+ theme(legend.position = "none")p6

文字出击


动起来,个轨迹

p6+transition_time(time) + labs(title = "{frame_time}")+ shadow_mark(alpha = 1, size = 1) #轨迹





题外话


探索一下这个病毒R包功能

x = get_nCov2019(lang='en') #当前数据x[]  #第一列不是时间,是数据累计


lang='en'去掉就显示中文了




一句画地图

plot(x)



trans_province和trans_city两个函数,可以中英文互相翻译



英译汉lang='en',告诉R包你输入是英文

trans_province(c("Hubei", "Jiangxi"), lang='en')




chinamap包

安装

remotes::install_github("GuangchuangYu/chinamap") 

获取各省经纬度

library(chinamap)cn = get_map_china() #获取经纬



画图


plot(x, region='china', chinamap=cn,     continuous_scale=FALSE,  #颜色离散型 palette='Blues') #指定配色


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

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