R可视化——地图绘制及数据的添加

加载所需R包

rm(list = ls())
setwd('D:\\map') #设置工作环境
#加载包
library(tidyverse)
library(sf)
library(ggspatial)

数据获取与加载

1、地图数据——从阿里云DataV可视化网站(可选择其他平台)下载格式为.json的地图数据:(网址:http://datav.aliyun.com/portal/school/atlas/area_selector
map <- read_sf("中华人民共和国.json")
image.png

绘制地图

ggplot(map)+#数据
  geom_sf(color='black',#线条颜色
          fill=NA,#填充色
          size=0.8)+#地图线条粗细
  annotation_scale(location = "bl", width_hint = 0.3) +#添加比例尺并调整位置及长度
  annotation_north_arrow(location = "tl", which_north = F, 
                         pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),
                         style = north_arrow_nautical)+#添加指北针,指北针类型style有north_arrow_orienteering;north_arrow_fancy_orienteering;north_arrow_minimal与north_arrow_nautical四种类型
  coord_sf(crs = "+proj=laea +lat_0=40 +lon_0=104")+#坐标参考系统(CRS)
  theme(text = element_text(size = 14,face = "bold"),
        panel.background = element_rect(fill = NA),
        panel.grid.major = element_line(color = "grey",size=0.2),
        axis.line = element_blank())+
  labs(x='', y='')
image.png

添加连续变量与分类变量数据

1、数据(数据为随机生成数据,无实际意义)
data <- read.csv("中华人民共和国.csv",header = T)
image.png
2、按照连续变量数据对地图进行填充
#合并数据并修正变量类型
data_all <- map %>% 
  left_join(data,by = "name") %>% 
  mutate_at("T", as.numeric)
#绘图
ggplot(data_all)+
  geom_sf(aes(fill=T),#填充
          color='black',#线条颜色
          size=0.8)+#地图线条粗细
  geom_sf_text(aes(label = name, geometry = geometry), color = 'red', size=3)+#标签
  scale_fill_gradient(low = "blue", high = "yellow")+#连续变量的填充
  annotation_scale(location = "bl", width_hint = 0.3) +#添加比例尺并调整位置及长度
  annotation_north_arrow(location = "tl", which_north = F, 
                         pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),
                         style = north_arrow_nautical)+#添加指北针
  coord_sf(crs = "+proj=laea +lat_0=40 +lon_0=104")+#坐标参考系统(CRS)
  theme(text = element_text(size = 14,face = "bold"),
        panel.background = element_rect(fill = NA),
        panel.grid.major = element_line(color = "grey",size=0.2),
        axis.line = element_blank())+
  labs(x='',y='')
image.png
3、按照分类变量数据对地图进行填充
#分类变量数据
data_all <- map %>% 
  left_join(data,by = "name") %>% 
  mutate_at("H", as.character)
#绘图
ggplot(data_all)+
  geom_sf(aes(fill=H),#填充
          color='black',#线条颜色
          size=0.8)+#地图线条粗细
  geom_sf_text(aes(label = name, geometry = geometry), color = 'red', size=3)+#标签
  scale_fill_manual(values = rainbow(34))+#按照分类变量进行填充
  annotation_scale(location = "bl", width_hint = 0.3) +#添加比例尺并调整位置及长度
  annotation_north_arrow(location = "tl", which_north = F, 
                         pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),
                         style = north_arrow_nautical)+#添加指北针
  coord_sf(crs = "+proj=laea +lat_0=40 +lon_0=104")+#坐标参考系统(CRS)
  theme(text = element_text(size = 14,face = "bold"),
        panel.background = element_rect(fill = NA),
        panel.grid.major = element_line(color = "grey",size=0.2),
        axis.line = element_blank())+
  labs(x='', y='')
image.png

添加散点图

1、数据(随机生成,无实际意义)
df1 <- data.frame(
  lon=c(99,110,115,105,115,113),
  lat=c(35,28,35,28,38,25),
  group=rep(c('A','B'),3),
  value1=c(1.8,2.5,3.5,2.5,3,3.5),
  value2=c(3,3.5,6,5,4,4.5))
image.png

2、添加散点图

ggplot(map)+
  geom_sf(color='black',#线条颜色
          fill=NA,#填充色
          size=0.8)+#地图线条粗细
  geom_point(data=df1,aes(x=lon,y=lat,fill=group,size=value1),#散点图
          shape=21,
          color='black',
          stroke=0.25)+
  annotation_scale(location = "bl", width_hint = 0.2) +#添加比例尺并调整位置及长度
  annotation_north_arrow(location = "tl", which_north = F, 
                         pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),
                         style = north_arrow_nautical)+#添加指北针
  coord_sf()+#这里使用默认crs,否则需要对原始数据进行转换
  theme(text = element_text(size = 14,face = "bold"),
        panel.background = element_rect(fill = NA),
        panel.grid.major = element_line(color = "grey",size=0.2),
        axis.line = element_blank())+
  labs(x='', y='')+
  scale_size(range=c(1,4))+#点的变化范围
  scale_fill_manual(values = c("red", "yellow"))+#颜色
  guides(fill = guide_legend(override.aes = list(size = 3),label.position = "right"))#图例设置
image.png

添加条形图

    数据仍为散点图数据,绘图过程中不能使用常规geom_bar等函数进行绘制,可以使用geom_linerange()或geom_errorbar()函数进行绘制,绘图代码如下:

ggplot(map)+
  geom_sf(color='black',#线条颜色
          fill=NA,#填充色
          size=0.8)+#地图线条粗细
  geom_linerange(data=df1, aes(x=lon-.3,ymin=lat,ymax=lat+value1*0.3, color='A'),  alpha=0.8,size=3)+#条形图1
  geom_linerange(data=df1, aes(x=lon+.3,ymin=lat,ymax=lat+value2*0.3, color='B'), alpha=0.8,size=3)+#条形图2
  annotation_scale(location = "bl", width_hint = 0.2) +#添加比例尺并调整位置及长度
  annotation_north_arrow(location = "tl", which_north = F, 
                         pad_x = unit(0.05, "in"), pad_y = unit(0.05, "in"),
                         style = north_arrow_nautical)+#添加指北针
  coord_sf()+
  theme(text = element_text(size = 14,face = "bold"),
        panel.background = element_rect(fill = NA),
        panel.grid.major = element_line(color = "grey",size=0.2),
        axis.line = element_blank())+
  labs(x='', y='')
image.png

参考:https://mp.weixin.qq.com/s/5HbiL_cUSZIuATy6UbCcAw

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,584评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,512评论 2 370
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 140,949评论 0 318
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 51,985评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,874评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,003评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,426评论 3 380
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,130评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,372评论 1 289
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,479评论 2 307
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,262评论 1 324
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,126评论 3 311
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,506评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,846评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,123评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,379评论 2 340
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,588评论 2 335

推荐阅读更多精彩内容