其他
当病毒R包nCov-2019遇上动图gganimate
参考如下
gganimate教程
1. https://www.jianshu.com/p/d9ecf19b810a
2. 如何让你的基因放烟花
新冠病毒R包教程+支持引用 更新后,数据结构或变化
1. nCov2019:你又该升级了
2. 检索疫情数据的R包来了!
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') #指定配色