“变形”地图可视化绘制方法来啦!!

今天的推文给大家介绍一个可以绘制”变形“地图的可视化包-R-cartogram包,改包可以使绘制地图时某些区域的几何形状进行扭曲变化,可以更好的传递地图表达的信息。主要内容如下:

  • cartogram包简介

  • cartogram包实例演示

  • 更多详细的数据可视化教程,可阅读我们的课程店铺:

cartogram包简介

cartogram包的官网为:https://github.com/sjewo/cartogram。其主要绘图函数有cartogram_cont()、cartogram_ncont()和cartogram_dorling()函数,我们依次列出其对应的绘图结果(以下直接给出绘制结果,注:地图基于tmap包绘制),如下:

「cartogram_cont()」

cartogram_cont example

「cartogram_ncont()」

cartogram_ncont example

「cartogram_dorling()」

cartogram_dorling example

接下来我们将使用具体数据进行各个绘图函数的绘制结果,我们还是使用ggplot2进行绘制。

cartogram包实例演示

这一部分我们使用的地图数据还是美国数据,来自于绘制美国标准地图的albersusa包,该包还包括人口数据POP,我们使用这两个数据对cartogram包进行演示。首先我们直接映射人口数据(不做数据变形)。可视化绘制代码如下(包括美化处理):

**

library(albersusa)
library(sf)
library(tidyverse)
library(hrbrthemes)
library(ggtext)
library(rcartocolor) # 可视化颜色包

# 导入数据
us_sf <- usa_sf("laea")
# 可视化绘制
library(rcartocolor) # 可视化颜色包
# 去除科学计数法表示样式
options(scipen=10000)

map_pir <- ggplot()+
  geom_sf(data = us_sf, aes(geometry = geometry, fill = pop_2014),
          color = "transparent", size = 1) +
  rcartocolor::scale_fill_carto_c(palette = "BluYl", name = "POP 2014",
                                  direction = -1, 
                                  guide = F,
                                  limits = c(0,40000000),
                                  breaks = seq(0, 40000000, by = 8000000),
                                  labels = glue::glue("{seq(0, 40000, by = 8000)} k")
                                   
                                )+
  guides(fill = guide_colorbar(barheight = unit(2.3, units = "mm"),  
                               barwidth = unit(100, units = "mm"),
                               direction = "horizontal",
                               ticks.colour = "grey40",
                               title.position = "left",
                               label.position = "bottom",
                               title.vjust = 1)) +
  labs(
      title = "Example Choropleth Map of <span style='color:#D20F26'>USA POP </span>Data",
      subtitle = "BluYl Color Palette in  <span style='color:#1A73E8'>rcartocolor</span> library",
      caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>" 
  ) +
 #定制化美化样式
 theme(
       text = element_text(family = "Roboto Condensed"),
       axis.ticks = element_blank(),
       axis.text = element_blank(),
       panel.grid.major = element_blank(),
       panel.grid.minor = element_blank(),
       panel.background = element_rect(fill = "black"),
       plot.background = element_rect(fill = "black"),
       plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "white",face = "bold",
                                     size = 24, margin = margin(t = 1, b = 12)),
       plot.subtitle = element_markdown(hjust = 0,vjust = 1,size=15,color = "white"),
       plot.caption = element_markdown(face = 'bold',size = 12,hjust = 1,color = "white"),
       legend.position = "bottom",
       legend.title = element_text( color = "grey60", face = "bold", size = 14),
       legend.text = element_text(color = "grey60", size = 10),
       legend.background = element_rect(fill = "black")
  )
  
map_pir

可视化结果如下:

Choropleth Map

接下来,我们依次使用上面介绍的三个函数进行绘制结果绘制。

cartogram_cont()结果

「绘制代码」

# 数据转化处理
usa_cartogram <- cartogram_cont(us_sf, "pop_2014", itermax=7)

#可视化绘制
options(scipen=10000)

map_cont <- ggplot()+
  geom_sf(data = usa_cartogram, aes(geometry = geometry, fill = pop_2014),
          color = "transparent", size = 1) +
  rcartocolor::scale_fill_carto_c(palette = "BluYl", name = "POP 2014",
                                  direction = -1, 
                                  guide = F,
                                  limits = c(0,40000000),
                                  breaks = seq(0, 40000000, by = 8000000),
                                  labels = glue::glue("{seq(0, 40000, by = 8000)} k")
                                   
                                )+
  guides(fill = guide_colorbar(barheight = unit(2.3, units = "mm"),  
                               barwidth = unit(100, units = "mm"),
                               direction = "horizontal",
                               ticks.colour = "grey40",
                               title.position = "left",
                               label.position = "bottom",
                               title.vjust = 1)) +
  labs(
      title = "Example Cartogram Map of <span style='color:#D20F26'>USA</span>",
      subtitle = "BluYl Color Palette in  <span style='color:#1A73E8'>rcartocolor</span> library",
      caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>" 
  ) +
 #hrbrthemes::theme_ipsum(base_family = "Roboto Condensed") +
 theme(
       text = element_text(family = "Roboto Condensed"),
       axis.ticks = element_blank(),
       axis.text = element_blank(),
       panel.grid.major = element_blank(),
       panel.grid.minor = element_blank(),
       panel.background = element_rect(fill = "black"),
       plot.background = element_rect(fill = "black"),
       plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "white",face = "bold",
                                     size = 24, margin = margin(t = 1, b = 12)),
       plot.subtitle = element_markdown(hjust = 0,vjust = 1,size=15,color = "white"),
       plot.caption = element_markdown(face = 'bold',size = 12,hjust = 1,color = "white"),
       legend.position = "bottom",
       legend.title = element_text( color = "grey60", face = "bold", size = 14),
       legend.text = element_text(color = "grey60", size = 10),
       legend.background = element_rect(fill = "black")
  )

「可视化结果:」

US POP cartogram_cont

cartogram_ncont()可视化结果

「绘制代码」:(由于好多代码是重复的,这里我放出不同之处的代码即可)

# 数据转换处理
usa_cartogram_n = cartogram_ncont(us_sf, "pop_2014")

#可视化绘制
··· +
geom_sf(data = usa_cartogram_n, aes(geometry = geometry, fill = pop_2014),
          color = "transparent", size = 1) +
···

「可视化结果:」

US POP cartogram_ncont

cartogram_dorling()可视化结果

「绘制代码」:(由于好多代码是重复的,这里我放出不同之处的代码即可)

# 数据处理
usa_cartogram_dorling  <- cartogram_dorling(us_sf, "pop_2014")

#可视化绘制
··· +
geom_sf(data = usa_cartogram_dorling, aes(geometry = geometry, fill = pop_2014),
          color = "transparent", size = 1)  +
···

「可视化结果:」

US POP cartogram_dorling

以上就是cartogram包主要绘图函数的介绍了~~~

总结

今天的推文接好了一种”变形“地图的绘制方法 *(R-cartogram包)*,虽然没常规地图使用的广泛,但却有着比一样的数据价值体现,希望小伙伴们可以多使用该包绘制出自己的地图可视化作品。


  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值