首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言ggplot2绘制中国区域地图并添加河流信息的小栗子

R语言ggplot2绘制中国区域地图并添加河流信息的小栗子

作者头像
用户7010445
发布于 2021-09-22 02:22:24
发布于 2021-09-22 02:22:24
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

今天的推文来自于公众号读者的投稿,作者 RGzxs,编辑排版由 小明 完成。

下面是正文

前几天看了几篇闫大佬绘制的中国沿海地区的地图(公众号:R语言数据分析指南),然后试着自己画了一下。大佬的代码里面只有中国主要河流的信息,没有区域河流信息。这几天我在网上找了找资料,将河流信息添加到地图上。

山东地图及青岛地图下载

因为要画的区域是黄海和胶州湾的地图,所以需要下载一个山东省地图和青岛地图。下载地址:http://datav.aliyun.com/tools/atlas/index.html#&lat=31.769817845138945&lng=104.29901249999999&zoom=4

web.png

这里复制JSON API的链接,然后使用迅雷下载。下载青岛地图的时候先点击山东省地图,然后再点击青岛地图。

设置工作目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
getwd()
setwd("C:/Users/zxs/Desktop")
getwd()

加载R包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package.list=c("geoviz","tidyverse","sf","terra","rasterVis","ggspatial",
               "rgdal","rnaturalearth","rnaturalearthdata","raster")

for (package in package.list) {
  if(!require(package,character.only=T,quietly=T)){
    install.packages(package)
    library(package,character.only = T)
  }
  
} #头一次这么批量加载R

山东省沿海地图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
shp1 <- sf::read_sf("shandong.json")
p1<-ggplot()+
  geom_sf(data=shp1,aes(fill=NULL))+
  annotation_scale(location="br")+# 设置距离刻度尺
  #annotation_north_arrow(location="tl",style = north_arrow_nautical(
  #  fill=c("grey40","white"),line_col="grey20"
  #))+
  labs(x=NULL,y=NULL)+
  geom_sf(data=shp1,fill="#AFB3B3",size=0.4,color="gray71")+#添加地图边界
    xlim(118,123)+ylim(34,38.5)+
  theme_bw()+
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.title = element_blank())+
  theme(plot.background = element_rect(fill="#9ECFDD",
                                       color="gray71",size = 0.5))+
  annotation_north_arrow(location="tl",
                         style = north_arrow_fancy_orienteering(
                           fill = c("grey40","white"),
                           line_col = "grey20"))
p1

这里面通过xlim(118,123)+ylim(34,38.5)设置地图范围。

image.png

绘制青岛地图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
shp2<- sf::read_sf("qingdao.json")
p2<-ggplot()+
  geom_sf(data=shp2,aes(fill=NULL))+
  annotation_scale(location="br")+# 设置距离刻度尺
  annotation_north_arrow(location="tl",style = north_arrow_nautical(
    fill=c("grey40","white"),line_col="grey20"
  ))+
  labs(x=NULL,y=NULL)+
  geom_sf(data=shp2,fill="#AFB3B3",size=0.4,color="gray71")+#添加地图边界
  xlim(120,120.6)+ylim(35.8,36.5)+
  theme_bw()+
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.title = element_blank())+
  theme(plot.background = element_rect(fill="#9ECFDD",
                                       color="gray71",size = 0.5))+
  annotation_north_arrow(location="tl",
                         style = north_arrow_fancy_orienteering(
                           fill = c("grey40","white"),
                           line_col = "grey20"))
p2

image.png

下载河流信息网站

国家基础地理信息中心

https://www.webmap.cn/mapDataAction.do?method=forw&resType=5&storeId=2&storeName=%E5%9B%BD%E5%AE%B6%E5%9F%BA%E7%A1%80%E5%9C%B0%E7%90%86%E4%BF%A1%E6%81%AF%E4%B8%AD%E5%BF%83&fileId=1A5CEBDB34C04A29AAB7E673930498E7

网站界面 (网站需要注册)

添加河流信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
river1<-sf::read_sf("/j51c004001/j51c004001/hydl.shp")
p3<-ggplot()+
  geom_sf(data=shp2,aes(fill=NULL))+
  annotation_scale(location="br")+# 设置距离刻度尺
  annotation_north_arrow(location="tl",style = north_arrow_nautical(
    fill=c("grey40","white"),line_col="grey20"
  ))+
  labs(x=NULL,y=NULL)+
  geom_sf(data=shp2,fill="#AFB3B3",size=0.4,color="gray71")+#添加地图边界
  xlim(120,120.6)+ylim(35.8,36.5)+
  geom_sf(data = river1,col='#87CEEB',size=0.5)+
  theme_bw()+
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.title = element_blank())+
  theme(plot.background = element_rect(fill="#9ECFDD",
                                       color="gray71",size = 0.5))+
  annotation_north_arrow(location="tl",
                         style = north_arrow_fancy_orienteering(
                           fill = c("grey40","white"),
                           line_col = "grey20"))
p3

image.png

现在把胶州湾地区所有的河流都画到地图上了,我们不需要这么多,需要对河流进行筛选

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
river1<-sf::read_sf("j51c004001/j51c004001/hydl.shp")
#筛选目标河流
river12<-filter(river1,river1$NAME=="大沽河")

p4<-ggplot()+
  geom_sf(data=shp2,aes(fill=NULL))+
  annotation_scale(location="br")+# 设置距离刻度尺
  annotation_north_arrow(location="tl",style = north_arrow_nautical(
    fill=c("grey40","white"),line_col="grey20"
  ))+
  labs(x=NULL,y=NULL)+
  geom_sf(data=shp2,fill="#AFB3B3",size=0.4,color="gray71")+#添加地图边界
  xlim(120,120.6)+ylim(35.8,36.5)+
  geom_sf(data = river12,col='#87CEEB',size=0.5)+
  theme_bw()+
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        legend.title = element_blank())+
  theme(plot.background = element_rect(fill="#9ECFDD",
                                       color="gray71",size = 0.5))+
  annotation_north_arrow(location="tl",
                         style = north_arrow_fancy_orienteering(
                           fill = c("grey40","white"),
                           line_col = "grey20"))
p4

image.png

最后是拼图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(patchwork)
p3+p4

image.png

欢迎大家关注我的公众号

小明的数据分析笔记本

今天推文的示例数据和代码可以在公众号后台留言 20210901 获取(精确匹配开头结尾都不能有空格)

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R-ggplot2 标准中国地图制作
由于基础图表绘制系列推文还在加紧准备中,所以这期推文还是对一些感兴趣的图表进行绘制,这期涉及空间图表绘制,主要涉及知识点如下:
用户7010445
2020/11/24
3.1K0
R-ggplot2 标准中国地图制作
R语言绘制中国地图:着色省份、标注名称
本次绘图是对《R语言绘制中国地图:着色省份、标注省份名称地图》中基础地图数据缺失(链接失效)的更新,基础地图数据来源《R语言 地图数据更新(来自高德 阿里云)》
拴小林
2022/03/14
3.2K0
R语言绘制中国地图:着色省份、标注名称
R 语言绘制十段线地图,给特定省份填色
今天给大家介绍的内容是用 R 语言绘制包含十段线[1]的地图,并且可以根据数据实现对各省份的填色。
庄闪闪
2022/10/31
3K1
R-ggspatial+ggplot2 实现带指北针和比例尺的空间地图绘制
继上次使用tmap包制作含有指北针(compass)和比例尺(scale bar)以及南海小地图的添加,详细内容分别见如下两篇文章:R-tmap 绘制带指北针和比例尺的空间地图和 R-tmap+grid 实现南海小地图的添加,得到了很多小伙伴的喜欢。虽然tmap包有着类似于ggplot2绘图语法,但对习惯使用ggplot2绘图的小伙伴怎不怎么友好。那么今天本期推文就使用 ggspatial 包实现指北针和比例尺的添加。主要涉及的知识点如下:
DataCharm
2021/02/22
3.1K0
R-ggspatial+ggplot2 实现带指北针和比例尺的空间地图绘制
【学习】R笔记1:ggplot绘制商务图表--中国分省热力地图
R和ggplot可视化功能非常强大,了解了一下其中的地图做法,发现R做世界地图、美国地图非常容易,但做中国地图就太麻烦了,需要自己DIY。 DIY也有多种方式,但网络上各种帖子教程的出图效果都不太理想,达不到工作用要求。下面是我的摸索过程,记录如下备忘,也请教于R老师们。 参考书目:ggplot2,R graphics cookbook,参考贴:http://site.douban.com/182577/widget/notes/10568279/note/257898418
小莹莹
2018/04/23
3.8K0
【学习】R笔记1:ggplot绘制商务图表--中国分省热力地图
R-gstat-ggplot2 IDW计算及空间插值可视化绘制
上一篇文章,我们使用了Python 自定义IDW插值函数进行了IDW空间插值及可视化的plotnine、Basemap的绘制方法(Python - IDW插值计算及可视化绘制),本期推文我们将使用R-gstat进行IDW插值计算和使用ggplot2进行可视化绘制,主要涉及的知识点如下:
DataCharm
2021/02/22
3.2K1
R-gstat-ggplot2 IDW计算及空间插值可视化绘制
数据地图系列8|R语言版数据地图(下)
今天要跟大家分享的是数据地图系列的第八篇——R语言版数据地图(下),分省(市级)热力地图。 步骤与昨天分享的中国热力地图步骤基本一致,只是需要调用的数据文件和需要自定义的指标文件略有本不同。 R语言系统环境配置: R version 3.2.3 RStudio Version 0.99.484 在正式开始之前,必须确保你的R语言环境中已经安装以下包: ggplot2 plyr maptools 如果还未安装,需要先安装:install.packages("ggplot2","plyr","maptools
数据小磨坊
2018/04/10
1.7K0
数据地图系列8|R语言版数据地图(下)
[NC图表复现]全球植物病原真菌分布图
R语言数据分析指南
2023/11/23
3320
[NC图表复现]全球植物病原真菌分布图
R-gstat+ggplot2-克里金(Kriging)插值计算及可视化绘制
上篇推文我们介绍了使用Python-pykrige包实现了克里金(Kriging)插值计算及对应的可视化结果绘制,详细内容点击下方链接:Python-pykrige包-克里金(Kriging)插值计算及可视化绘制,相信你也感受到了Python的简单方便性。本期推文,我们就推出使用R-gstat包实现克里金(Kriging)插值的计算及对应结果的可视化绘制,主要知识点如下:
DataCharm
2021/02/22
4.2K0
R-gstat+ggplot2-克里金(Kriging)插值计算及可视化绘制
ggplot2优雅的批量绘制圆形地图
R语言数据分析指南
2023/08/18
6530
ggplot2优雅的批量绘制圆形地图
R 地图绘制-比例尺与指北针
R语言可以进行数据分析,也可以进行地图绘制,而且非常简洁,快速。 虽然Arcgis基于桌面可视化操作,能够进行空间分析,但是唯一不足的就是操作步骤繁琐而且一不小心,就要从头再来,可重复性较低。
Jamesjin63
2022/10/25
1.7K0
R 地图绘制-比例尺与指北针
跟着Nature Genetics 学画图:R语言ggplot2画地图并且叠加饼状图的简单小例子
The world map was constructed using the R package ggplot2 with the Natural Earth dataset.
用户7010445
2021/05/07
2.1K0
数据地图系列7|R语言版(上)
今天跟大家分享的是数据地图系列的第七篇——使用R语言制作热力数据地图! 也许很多小伙伴儿对于R语言还很陌生,感觉很神秘。 确实,R语言的数据地图需要使用很长的代码来写。但是就像我们学习高数和微积分一样,再复杂再庞大的公式,都会有计算软件帮你代劳,而你只需要知道怎么调整参数、控制路径,并且明白每一句代码的实现功能就可以了,无需记住每一串代码的详细内涵和写法。 而且接下来要写的诸多代码,大部分都并非自己写的,而是从网上拼凑,经过整理与汇总后的。坦白的说,绝大部分自己都写不出来,语法也很费解,只是勉强知道大概可以
数据小磨坊
2018/04/10
2.2K1
数据地图系列7|R语言版(上)
ggplot2画世界地图小实例
image.png 另外一种形式,以下代码来自网络,原文地址 https://stackoverflow.com/questions/54964279/how-to-create-a-world-street-map-with-r
用户7010445
2020/03/03
3.3K0
R-ggplot2+sf 核密度空间插值可视化绘制
上篇推文我们介绍了使用Python的plotnine、Basemap包对空间kde插值结果进行了可视化绘制,当然也包括了具体的插值过程,详细内容大家可以点击下方链接查看:Python-plotnine 核密度空间插值可视化绘制 、Python-Basemap核密度空间插值可视化绘制。
DataCharm
2021/02/22
2.2K0
R-ggplot2+sf 核密度空间插值可视化绘制
R语言绘制地图热图
1. https://www.cnblogs.com/lonelyxmas/p/5722260.html
一粒沙
2019/07/31
6.6K1
R语言绘制地图热图
ggplot2 案例:使用 ggplot2 绘制绘制一幅气泡地图展示各国疫情状况
新冠肺炎确诊患者们都分布在那里呢?约翰·霍普金斯大学提供了一份数据集,使用这份数据集我们可以绘制一幅气泡地图展示这些确诊患者的分布,代码比较简单:
王诗翔呀
2020/07/06
1.3K0
ggplot2 案例:使用 ggplot2 绘制绘制一幅气泡地图展示各国疫情状况
R语言可视化——多边形与数据地图填充
ggplot函数中有一类特殊的图表类型叫做多边形,很难用传统的视角来定义它属于哪一类图表,因为它能够呈现信息多种多样。 特别是在做某些比较高阶的图表——地图时,这种多边形函数便能够大显神通。 之前本公众号所推送的所有涉及地图图表绘制所使用的技巧,几乎全部都依赖多边形函数的支持。 library(ggplot2) library(plyr) library("maptools") 这里以之前推送过的全球地图为例: 导入地图地理信息数据: world_map <-readShapePoly("c:/rstudy
数据小磨坊
2018/04/11
2K0
R语言可视化——多边形与数据地图填充
国内疫情图绘制(静态)
该点子来源于一个小作业,作业要求是使用R平台相关绘图工具绘制中国疫情热力图(10分),参考效果如下图:
庄闪闪
2021/04/09
8360
绘图技巧 | “变形”地图可视化绘制方法
今天的推文给大家介绍一个可以绘制”变形“地图的可视化包-R-cartogram包,改包可以使绘制地图时某些区域的几何形状进行扭曲变化,可以更好的传递地图表达的信息。主要内容如下:
DataCharm
2021/02/22
1.4K0
绘图技巧 | “变形”地图可视化绘制方法
推荐阅读
相关推荐
R-ggplot2 标准中国地图制作
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验