ggplot绘制map

R语言可以进行数据分析,也可以进行地图绘制,而且非常简洁,快速。

虽然Arcgis基于桌面可视化操作,能够进行空间分析,但是唯一不足的就是操作步骤繁琐而且一不小心,就要从头再来,可重复性较低。

这篇文章主要讲述如何利用R语言中的ggplot与sf绘制带有指北针、图列与标尺的地图

屏幕快照 2020-06-28 下午9.27.59.png

数据

我们下载非洲地区54个国家的图层Afirca.json保存在本地。然后加载包去读取。然后在ggplot中使用 geom_sf来简单画出非洲地区的轮廓

library(tidyverse)

library(sf)

library(ggspatial)

library(ggthemes)

# https://geojson-maps.ash.ms/

africa

# plot

africa %>%

ggplot() +

geom_sf()

# populations with colors

ggplot(africa) +

geom_sf(aes(geometry = geometry, fill = pop_est))

屏幕快照 2020-06-29 上午1.48.20.png

指北针

一张标准的地图需要有比例尺,地图及指北针,所以这次我们加上比例尺与指北针,通过ggspatial包,调用annotation_scale来增加比例尺。location = "bl"是调整比例尺位置, width_hint = 0.3调整比例的长度。

annotation_north_arrow则是用来添加指北针。style =north_arrow_nautical来更改指北针的类型,主要有north_arrow_orienteering;north_arrow_fancy_orienteering;north_arrow_minimal与north_arrow_nautical四种类型,其他参数可help(annotation_north_arrow)查看。

# with scales and north_arrow

ggplot(africa) +

geom_sf(aes(geometry = geometry, fill = pop_est)) +

annotation_scale(location = "bl", width_hint = 0.4) +

annotation_north_arrow(location = "tr", which_north = "true",

pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),

style = north_arrow_nautical)

屏幕快照 2020-06-29 上午1.37.08.png

背景调整

如果不喜欢有grid的背景,可以根据喜好,调节自己喜欢的背景

这里我们采用, theme_light()白色网格背景。更多背景设置,请见ggplot2 主题背景设置

# with blank themes

ggplot(africa) +

geom_sf(aes(geometry = geometry, fill = pop_est)) +

annotation_scale(location = "bl", width_hint = 0.4) +

annotation_north_arrow(location = "tr", which_north = "true",

pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),

style = north_arrow_nautical) +

theme_light()

屏幕快照 2020-06-29 上午1.48.33.png

图例颜色

默认的图例颜色是blue色调,我们可以根据

来更改红色基准的色调。

legend 是默认的分段方式,我们可以根据需要设定成4分类,或者更改图例的距离。

# with colors

ggplot(africa) +

geom_sf(aes(geometry = geometry, fill = pop_est)) +

scale_fill_gradientn(colours=brewer.pal(5,"Reds"))+

annotation_scale(location = "bl", width_hint = 0.4) +

annotation_north_arrow(location = "tr", which_north = "true",

pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),

style = north_arrow_nautical) +

theme_light()

# for 4 categories

africa %>% mutate( new=cut(pop_est,b = 4)) %>%

ggplot() +

geom_sf(aes(geometry = geometry, fill = new)) +

annotation_scale(location = "bl", width_hint = 0.4) +

annotation_north_arrow(location = "tr", which_north = "true",

pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),

style = north_arrow_nautical) +

theme_light()

# set for sacles

my_breaks = c(0,3207562,10401245,18419935,20644434,149229090 )

ggplot(africa) +

geom_sf(aes(geometry = geometry, fill = pop_est)) +

scale_fill_gradient(name = "count",

breaks = my_breaks, labels = my_breaks)

#

ggplot(africa) +

geom_sf(aes(geometry = geometry, fill = pop_est)) +

scale_fill_gradient(name = "count",

breaks = my_breaks, labels = my_breaks, guide="legend")

屏幕快照 2020-06-29 上午1.47.58.png

屏幕快照 2020-06-29 上午1.48.05.png

参考

matlab maps 指北针和比例尺,R 地图绘制-比例尺与指北针相关推荐

  1. matlab画韦恩图,用R语言绘制韦恩图

    R中提供了多个可用于绘制韦恩图的软件包,本文主要是介绍的是VennDiagram包. 安装VennDiagram包:install.packages("VennDiagram") ...

  2. android 高德比例尺,高德地图——添加比例尺控件

    AMap.Scale 距离控件 AMap.ToolBar 比例尺 插件 &plugin=AMap.Scale,AMap.ToolBar map,addControl(new AMap.Scal ...

  3. echarts r 地图_用R与Stata绘制地图,让文稿shinly起来

    有时候,我们在写文稿时,可能会涉及到数据的"统计制图"这一个环节.比如我们会遇到这样一批数据集,绘制全国31个省人均GDP的空间分布特征,以探索不同地区的经济发展水平差异. 这时候 ...

  4. 数据地图绘制工具汇总

    转自:http://www.civn.cn/p/11293.html CIVN之前介绍过TileMill.unfolding.Batchgeo等地图工具,Nathan Yau在他的著作<鲜活的数 ...

  5. 空间数据可视化地图绘制R语言可复现

    空间数据可视化&地图绘制&R语言可复现 绘制地理空间数据是一项常见的可视化任务,需要专门的工具.通常,问题可以分解为两个问题: 使用一个数据源绘制地图 将来自另一个信息源的元数据添加到 ...

  6. R语言绘制美国疫情地图(可交互式)

    前两天用python的plotly画了一个疫情图,发现这个挺简单的,但是当我用R画的时候就有点陌生了,毕竟才学没多久...一开始我尝试用R中的ggplot2包和maps包绘制美国疫情地图,但是发现它的 ...

  7. R语言-地图绘制的思路

    R中的画地图的思路有三种,一种是利用包里GIS方面的数据,在R中直接画出来,第二种是从其他地方拿到数据,在R中通过某些包解析后再展现成,第三种就是直接把别人的图拿过来,自己再添加或去掉自己需要或不需要 ...

  8. R语言绘制中国地图:着色省份、标注省份名称

    今天分享一个可以直接使用的中国地图,相较于其他R语言绘制的地图,有以下优点: 1.包含十段线 http://xzqh.mca.gov.cn/map 2.标注省份名称​ 缺点:南海岛礁未绘制小地图 重点 ...

  9. matlab 画qq图,科学网—[转载]R语言绘制QQ图 - 刘朋的博文

    R语言绘制QQ图 实例1: #############加载数据 data R R=apply(R,2,as.numeric) #R语言将字符串矩阵转化为数值型矩阵,apply()函数里面的第2个值,如 ...

  10. Matlab中自带地图绘制WorldMap详解

    Matlab中自带地图绘制WorldMap详解 转载地址:http://blog.csdn.net/archielau/article/details/7933265,其实这些代码是在matlab中的 ...

最新文章

  1. bat脚本如何自动输入y_Linux系统如何设置开机自动运行脚本?
  2. HTML添加首页,添加首页分类推荐.html
  3. thinkphp读写mysql的枷锁_thinkphp5 数据库配置读写分离
  4. js中document.getElementById(ID)与document.getElementsByName(Name)的区别
  5. 《淘宝网开店 SEO 推广 营销 爆款 实战200招》——1.5 开一家适合你自身发展的店铺...
  6. 【项目管理】记第一次出差到客户现场推进项目验收感悟-后续1
  7. mysql 先排序再去重_有人说先学会三轴,再去搞四轴、五轴加工中心,这几种有何区别?...
  8. Docker私有仓库管理,删除本地仓库中的镜像
  9. p1和p7签名的区别
  10. jquery-事件冒泡
  11. php更换wordpress用户头像,WordPress主题设置在前台页面添加用户头像教程
  12. Beaglebone移植DDS模块驱动(AD9833)
  13. ryzen linux 搭配显卡,R7 1700配什么显卡?AMD Ryzen7 1700搭配显卡推荐 (全文)
  14. 食品药品版本库存管理软件
  15. 【量化】资产组合理论:鸡蛋不能放在一个篮子里
  16. 2021-3-22科研进展
  17. vce数学考试能用计算机,准备VCE数学考试的诀窍,从一本出色的笔记开始!
  18. 甲骨文数据库购买的价格(二)
  19. Java串口助手 带UI界面 Java串口调试工具 FPV
  20. bilibili直播间利用python爬虫自动发送弹幕

热门文章

  1. Affinity笔记:渐变工具
  2. 用户使用手机号快速登录注册功能实现
  3. 订阅号与服务号的区别
  4. cad没有命令输入框_cad2017命令输入框没了
  5. H5传奇源码,附带微信支付,商城系统,新增了元宝交易商城系统源码
  6. ExtJs4(3)——带搜索和操作按钮的表
  7. 邮件中的FYI和PFA代表什么意思
  8. Flutter Package 插件开发
  9. 卷积神经网络中的“池化层”
  10. 不那么完美的 RSS 订阅方案 — feedly + RSSHub Radar