天天看点

中国地图_实用帖之Rggplot2 标准中国地图制作

这期涉及空间图表绘制,主要涉及知识点如下:

  • ggplot2 + sf 中国标准地图绘制
  • cowplot 包实现地图子图插入

ggplot2 + sf 中国标准地图绘制

本期的绘图我们是按照如下图表进行绘制的(该图来自朋友公号):

中国地图_实用帖之Rggplot2 标准中国地图制作

其实我很早就想试着用R进行此类图表的绘制了,但由于强大的Arcgis和绘图进度等原因,导致迟迟没有进行,这期就进行此类图表的绘制。注:图中散点的经纬度信息已从朋友那获知,但涉及具体数据则是虚构的。

地图读取和散点标注

这里的中国地图格式为 geojson 格式,还是使用sf包进行灵活读取,具体代码如下:

china_shp "中国省级地图GS(2019)1719号.geojson"
nine "九段线GS(2019)1719号.geojson"
china nine_line 
           

数据预览如下(部分):

中国地图_实用帖之Rggplot2 标准中国地图制作
中国地图_实用帖之Rggplot2 标准中国地图制作

接下来我们进行探索性绘图,主要使用geom_sf() 进行绘制,代码如下:

这里可以看到,我们没有使用常规的WGS84坐标,而是采用 +proj=laea +lat_0=40 +lon_0=104 进行绘制,可视化结果如下:

中国地图_实用帖之Rggplot2 标准中国地图制作

比例尺和指北针的添加,则是依靠ggspatial包。

散点数据的读取

由于只获得数据经纬度信息,其他数据均为虚构,数据预览如下:

中国地图_实用帖之Rggplot2 标准中国地图制作

这里注意点,要想使数据绘制在地图上,我们需使用st_as_sf()对其进行转换,处理:

结果如下:

中国地图_实用帖之Rggplot2 标准中国地图制作

注意红色框中的内容

接下来将数据在地图中显示,具体代码如下:

可视化结果如下:

中国地图_实用帖之Rggplot2 标准中国地图制作

这里还存在如下问题:

(1) 尽量将南海部分放置在右下角(虽然这样也可以)

(2) 图例只是默认的,没有进行定制化操作,影响美观

cowplot包子图添加

cowplot包可是实现对绘图结果的任意组合,很适合绘制地图子图的绘制,这里直接给出绘图代码,如下:

可视化效果如下:

中国地图_实用帖之Rggplot2 标准中国地图制作

这里需注意的是xlim和ylim的设置,具体值都是在 +proj=laea +lat_0=40 +lon_0=104 投影坐标系下的值,而常规坐标转不同坐标下的操作也很简单,可使用st_transform进行操作。如下:

即可获取对应值,进而进行范围设置。

总结

该期推文也是基于自己对地图的喜欢进行绘制,后面还是会以基础图表的绘制为主,希望大家能够喜欢,多多支持。更多想法可以在留言区进行留言告知。

中国地图_实用帖之Rggplot2 标准中国地图制作

点个在看呗!

继续阅读