matlab maps 指北针和比例尺,R 地图绘制-比例尺与指北针
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 地图绘制-比例尺与指北针相关推荐
- matlab画韦恩图,用R语言绘制韦恩图
R中提供了多个可用于绘制韦恩图的软件包,本文主要是介绍的是VennDiagram包. 安装VennDiagram包:install.packages("VennDiagram") ...
- android 高德比例尺,高德地图——添加比例尺控件
AMap.Scale 距离控件 AMap.ToolBar 比例尺 插件 &plugin=AMap.Scale,AMap.ToolBar map,addControl(new AMap.Scal ...
- echarts r 地图_用R与Stata绘制地图,让文稿shinly起来
有时候,我们在写文稿时,可能会涉及到数据的"统计制图"这一个环节.比如我们会遇到这样一批数据集,绘制全国31个省人均GDP的空间分布特征,以探索不同地区的经济发展水平差异. 这时候 ...
- 数据地图绘制工具汇总
转自:http://www.civn.cn/p/11293.html CIVN之前介绍过TileMill.unfolding.Batchgeo等地图工具,Nathan Yau在他的著作<鲜活的数 ...
- 空间数据可视化地图绘制R语言可复现
空间数据可视化&地图绘制&R语言可复现 绘制地理空间数据是一项常见的可视化任务,需要专门的工具.通常,问题可以分解为两个问题: 使用一个数据源绘制地图 将来自另一个信息源的元数据添加到 ...
- R语言绘制美国疫情地图(可交互式)
前两天用python的plotly画了一个疫情图,发现这个挺简单的,但是当我用R画的时候就有点陌生了,毕竟才学没多久...一开始我尝试用R中的ggplot2包和maps包绘制美国疫情地图,但是发现它的 ...
- R语言-地图绘制的思路
R中的画地图的思路有三种,一种是利用包里GIS方面的数据,在R中直接画出来,第二种是从其他地方拿到数据,在R中通过某些包解析后再展现成,第三种就是直接把别人的图拿过来,自己再添加或去掉自己需要或不需要 ...
- R语言绘制中国地图:着色省份、标注省份名称
今天分享一个可以直接使用的中国地图,相较于其他R语言绘制的地图,有以下优点: 1.包含十段线 http://xzqh.mca.gov.cn/map 2.标注省份名称 缺点:南海岛礁未绘制小地图 重点 ...
- matlab 画qq图,科学网—[转载]R语言绘制QQ图 - 刘朋的博文
R语言绘制QQ图 实例1: #############加载数据 data R R=apply(R,2,as.numeric) #R语言将字符串矩阵转化为数值型矩阵,apply()函数里面的第2个值,如 ...
- Matlab中自带地图绘制WorldMap详解
Matlab中自带地图绘制WorldMap详解 转载地址:http://blog.csdn.net/archielau/article/details/7933265,其实这些代码是在matlab中的 ...
最新文章
- bat脚本如何自动输入y_Linux系统如何设置开机自动运行脚本?
- HTML添加首页,添加首页分类推荐.html
- thinkphp读写mysql的枷锁_thinkphp5 数据库配置读写分离
- js中document.getElementById(ID)与document.getElementsByName(Name)的区别
- 《淘宝网开店 SEO 推广 营销 爆款 实战200招》——1.5 开一家适合你自身发展的店铺...
- 【项目管理】记第一次出差到客户现场推进项目验收感悟-后续1
- mysql 先排序再去重_有人说先学会三轴,再去搞四轴、五轴加工中心,这几种有何区别?...
- Docker私有仓库管理,删除本地仓库中的镜像
- p1和p7签名的区别
- jquery-事件冒泡
- php更换wordpress用户头像,WordPress主题设置在前台页面添加用户头像教程
- Beaglebone移植DDS模块驱动(AD9833)
- ryzen linux 搭配显卡,R7 1700配什么显卡?AMD Ryzen7 1700搭配显卡推荐 (全文)
- 食品药品版本库存管理软件
- 【量化】资产组合理论:鸡蛋不能放在一个篮子里
- 2021-3-22科研进展
- vce数学考试能用计算机,准备VCE数学考试的诀窍,从一本出色的笔记开始!
- 甲骨文数据库购买的价格(二)
- Java串口助手 带UI界面 Java串口调试工具 FPV
- bilibili直播间利用python爬虫自动发送弹幕