窝在家里看代码,偶然间看到Y叔公众号推送的 用R画疫情地图第一波 ,想重复一下,结果其中一个Y叔自己写的包装不上(chinamap),尝试一下用别的方法实现R语言绘制疫情地图。
采用的方法基于R笔记1:ggplot绘制商务图表--中国分省热力地图_刘万祥ExcelPro_新浪博客
数据来源:
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/ ,如需转载,请注明出处,否则将追究法律责任。