ITPub博客

首页 > > > R语言绘制疫情地图

R语言绘制疫情地图

作者:浪花小雨滴 时间:2020-06-16 15:25:37 0 删除 编辑

窝在家里看代码,偶然间看到Y叔公众号推送的 用R画疫情地图第一波 ,想重复一下,结果其中一个Y叔自己写的包装不上(chinamap),尝试一下用别的方法实现R语言绘制疫情地图。

采用的方法基于R笔记1:ggplot绘制商务图表--中国分省热力地图_刘万祥ExcelPro_新浪博客

数据来源:

  1. 中国各省份、地区的地理信息:可以从 pan.baidu.com/share/lin 链接下载,其中bou2_4p.dbf,bou2_4p.shx和bou2_4p.shp三个文件是我们所需要的,将它们解压在同一个目录下。
  2. 各行政区新冠病毒确诊患者数,用的是Y叔的办法:
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5&callback=1580373566110'
x = readLines(url, encoding="UTF-8")
x = sub("^\\d+", "", x)
x = sub("^\\(", "", x)
x = sub("\\)$", "", x)
y = fromJSON(x)
d = fromJSON(y$data)
write.csv(file='Heatmap_data.csv',d$areaTree[1,2][[1]][,c(1,3)])

产生的csv文件里包含了所需要的各行政区的确诊患者数,疑似患者数,死亡数和治愈的患者数:

但是导入的地理信息和疫情信息里面所用的省份名称不一致(NAME一栏):

为了方面后面合并地理信息和疫情信息表格,构建了对应关系表,并且根据患者数进行分类(Heatmap_data):

根据NAME,合并地理信息和疫情信息:

china_map = readShapePoly("bou2_4p.shp")
x <- china_map@data          
xs <- data.frame(x,id=seq(0:924)-1)
china_map1 <- fortify(china_map) 
china_map_data <- join(china_map1, xs, type = "full")  
china_data <- join(china_map_data, Heatmap_data, type="full") 

合并后的结果:

绘图:

p = ggplot(china_data, aes(x = long, y = lat, group = group,fill = Group)) + #按Group上色
  geom_polygon(colour="Black") + coord_map("polyconic")  #polyconic投影方式,防止地理图像的变形


删除不必要的元素(灰色背景和横纵坐标等):

p = p + theme(               
    panel.grid = element_blank(),
    panel.background = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    axis.title = element_blank()
  )

修改颜色,感觉Y叔的颜色方案挺好看,我就拿来用了:

p = p + scale_fill_manual(values=c("#FEE5D9","#A50F15","#FB6A4A","#FCAE91","#DE2D26"))
p

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3156614/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: MongoDB GridFS
请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40027