查看原文
其他

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

Y叔叔 biobabble 2020-02-07

得益于我自己写的R包,我们可以访问到最新的数据和历史数据,那么画起图来,就非常容易,包括地图,地图的功能已经在version = 0.0.4中加入,所以你可能需要更新一下,安装方法在之前已经讲过,请自取:

世界地图

require(nCov2019)
x = get_nCov2019()
plot(x)

三句话,加载包,拿最新在线数据,画图,完。所以说小白都会,不会算我输。

但是画起来啊,中国太可怕了,主要是在湖北省。能不能按省来画中国呢?

答案当然可以,首先你需要装chinamap包,来拿到中国地图:

remotes::install_github("GuangchuangYu/chinamap")

有了这个包之后,加载包,拿中国地图,然后画图,给多个中国地图,就行:

require(chinamap)
cn = get_map_china()

plot(x, chinamap=cn)

中国地图

要画中国地图,代码和前面一样,只需要指定region="china"即可。

plot(x, region='china', chinamap=cn)

另外,假设你想要用离散型的颜色填充,只需要continuous_scale=FALSE即可,还有你可能看烦了红色,换个色吧,通过palette指定:

plot(x, region='china', chinamap=cn,
continuous_scale=FALSE,
palette='Blues')

按省市来画

这个你需要有市界的地图,我自己有,你呢,自己网上找。一句读地图,一句画地图,只需要指定省份就行。

m = sf::st_read("../Downloads/市界.shp")
plot(x, region='湖北', chinamap=m)

画个河南:

plot(x, region='河南', chinamap=m)

还能按地区来画,比如说把广东和福建画出来,用个基佬紫来填充颜色:

plot(x, region=c('福建', '广东'),
chinamap=m, palette="Purples")

画历史数据

刚才演示的是最新数据,能不能画历史数据呢?答案是肯定的。

一条语句,加载历史数据,然后还是plot,用法一模一样,只多了一个参数,那就是指定日期。

y <- load_nCov2019()
plot(y, region='china',
chinamap=cn, date='2020-02-01')

有历史数据嘛,我们可以一天画一张图,看看病毒的传播,确诊人数的增长历程:

library(magick)

d <- c(paste0("2020-01-", 20:31), paste0("2020-02-0", 1:2))
img <- image_graph(600, 450, res = 96)
out <- lapply(d, function(date){
p <- plot(y, region='china', chinamap=cn, date=date,
label=FALSE, continuous_scale=FALSE)
print(p)
})
dev.off()

animation <- image_animate(img, fps = 2)
print(animation)

往期精彩

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

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