国内疫情图绘制(静态)

简介: 该点子来源于一个小作业,作业要求是使用R平台相关绘图工具绘制中国疫情热力图

该点子来源于一个小作业,作业要求是使用R平台相关绘图工具绘制中国疫情热力图(10分),参考效果如下图:


7V[FZ`N(G0D)3{`X7`8KQEX.png



第一次使用R绘制地图的我,一脸懵逼。于是我开始翻书(《R语言数据可视化之美》,《ggplot2》),《R数据科学》),以及百度搜索。找到了几篇很实在的blog(见文末)。最后我的作业如下:

所需的包

library(mapdata)library(maptools)library(ggplot2)library(plyr)


利用maptools包,可以导入shp格式的中国地图(相当于一个模板),该文件可通过网上获取,为了大家方便实战,我i已经将该文件放在我的github里,尽情下载。

china_map = readShapePoly("bou2_4p.shp")#导入shp格式的中国地图x<-china_map@data


得到的中国地图数据如下

D@A%OU`5U6(@)MR582Y8W_8.png


地图中共计有925个地域信息,并将其转化为数据库,并基于id进行连接。

xs<-data.frame(x,id=seq(0:924)-1)china_map1<-fortify(china_map)  #转化为数据框china_map_data<-join(china_map1,xs,type="full")#基于id进行连接a = data.frame(unique(china_map@data$NAME))#省份名称


接下来准备我们的数据,数据主要来自丁香园,是某一天的中国各省数据(ratio表示累计确认人数,people表示当天确认人数,province表示省份)一共31的省份,包括(香港,台湾)。基于两个表格相同属性(NAME)进行合并,这样就可以把模板中的地理信息一起合在一起了,这是关键步骤。


`XK)}1~DNQ5${T1VXW2ETPH.png


mydata<-read.csv("data_dt.csv",header=T,as.is=T)china_data <- join(china_map_data, mydata, type="full")#基于NAME字段进行连接,NAME字段来自于地图文件中


绘制地图:

版本一(无省份名称的当日各省确认人数)

ggplot(china_data, aes(x = long, y = lat, group = group, fill = people)) +        geom_polygon(colour="grey40") +    scale_fill_gradient(low="white",high="steelblue") +#指定渐变填充色,可使用RGB    theme( #清除不需要的元素        panel.grid = element_blank(),        panel.background = element_blank(),        axis.text = element_blank(),        axis.ticks = element_blank(),        axis.title = element_blank(),        legend.position = c(0.2,0.3)      )

J@JKF[}$3`K]}2`PO]%]DY1.png


版本二(有省份名称的当日各省确认人数)

midpos <- function(x) mean(range(x,na.rm=TRUE)) #取形状内的平均坐标centres <- ddply(china_data,.(NAME),colwise(midpos,.(long,lat)))
ggplot(china_data,aes(long,lat))+          geom_polygon(aes(group=group,fill=people),colour="black")+    scale_fill_gradient(low="white",high="steelblue") +    geom_text(aes(label=NAME),data=centres) +    theme(         panel.grid = element_blank(),        panel.background = element_blank(),         axis.text = element_blank(),         axis.ticks = element_blank(),         axis.title = element_blank()        )


]7SBYEKL0F_0$)3`_(~}DAB.png

当然如需绘制当日累计各省确诊人数,只需将fill=people换成fill=ratio即可,大家可以自己尝试。代码,数据相关资料与shp格式的中国地图都已放在我的github上了。https://github.com/liangliangzhuang/R_example

目录
相关文章
|
6月前
r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的预期寿命和人口气泡图动画动态gif图
r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的预期寿命和人口气泡图动画动态gif图
|
数据可视化 定位技术
全球疫情图绘制(静态)
即中国疫情图之后,又来了一个小作业,作业要求是使用R平台相关绘图工具绘制全国疫情热力图
155 0
全球疫情图绘制(静态)
|
算法 索引
【D3.js - v5.x】(5)绘制力导向图 | 附完整代码
【D3.js - v5.x】(5)绘制力导向图 | 附完整代码
793 0
【D3.js - v5.x】(5)绘制力导向图 | 附完整代码
|
存储 JSON 数据可视化
ChatGPT工作提效之数据可视化大屏组件Echarts的实战方案(大数据量加载、伪3D饼图、地图各省cp中心坐标属性、map3D材质)
ChatGPT工作提效之数据可视化大屏组件Echarts的实战方案(大数据量加载、伪3D饼图、地图各省cp中心坐标属性、map3D材质)
640 0
|
城市大脑 自动驾驶 Cloud Native
和400万客户一起,画出“千行百业云上图”
和400万客户一起,画出“千行百业云上图”
161 0
|
定位技术
无须任何数据,六十秒快速制作三维影像图用以作为城市空间格局分析的底图
无须任何数据,六十秒快速制作三维影像图用以作为城市空间格局分析的底图
124 0
【ArcGIS制图案例】城市关系强度图
【ArcGIS制图案例】城市关系强度图
126 0
|
存储 定位技术 开发工具
使用 ES 实现疫情地图或者外卖点餐功能(含代码及数据)
使用 ES 实现疫情地图或者外卖点餐功能(含代码及数据)
使用 ES 实现疫情地图或者外卖点餐功能(含代码及数据)
|
前端开发 API
智慧城市中城市级建筑白膜的加载与动态调色
本文以cesium为例,重点了阐述了在智慧城市场景中,如何基于cesium进行城市级建筑模拟渲染,以及点击展示模型数据的属性信息,支持根据建筑的不同高度来渲染不同的颜色。 cesium支持将城市建筑信息转换成b3dm数据,通过api可进行展示。
2079 0
智慧城市中城市级建筑白膜的加载与动态调色
|
JavaScript NoSQL 数据可视化
D3.js 力导向图的显示优化
我们用 D3.js 力导向图来对图数据库的数据关系进行分析,其节点和关系线直观地体现出图数据库的数据关系,并且还可以关联相对应的图数据库语句完成拓展查询。此外,本文还讲解了如何优化新增节点和多边关系的显示
1559 0
D3.js 力导向图的显示优化