微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更改tmap中图例元素的顺序

如何解决如何更改tmap中图例元素的顺序

有没有人在使用 tm_fill 时改变图例元素的顺序?

我使用 tm_polygon 创建了地图,并尝试使用 breakslabels 更改顺序。他们都失败了。

请参阅下面的示例。 gov_reg_updatesf 对象。

head(gov_reg_update)
Simple feature collection with 6 features and 1 field
Geometry type: MULTIpolyGON
Dimension:     XY
Bounding Box:  xmin: 24.69451 ymin: 21.99913 xmax: 36.90871 ymax: 31.66855
Geodetic CRS:  WGS 84
# A tibble: 6 x 2
  region_gams                                                                                geometry
  <chr>                                                                            <MULTIpolyGON [°]>
1 e-delta     (((31.22864 30.05246,31.22419 30.07381,31.21677 30.06491,31.22344 30.03963,31.22...
2 m-delta     (((31.2195 31.15309,31.21099 31.15603,31.20113 31.15235,31.19361 31.1579,31.1728...
3 m-egypt     (((30.99183 28.90639,30.99953 28.91931,30.99231 28.9239,30.98534 28.91505,30.979...
4 others      (((28.53467 27.67273,28.46664 27.67461,27.36089 27.67578,27.83086 28.57875,28.46...
5 u-egypt     (((32.8852 24.46148,32.88283 24.45191,32.89828 24.45578,32.90756 24.45386,32.915...
6 w-delta     (((30.83602 30.48546,30.82963 30.49857,30.83614 30.51551,30.84493 30.52367,30.85...

这是我用来绘制地图的代码。从下图可以看出,图例元素的顺序与我在 breaks 中指定的顺序不匹配。有什么想法吗?

  tm_shape(gov_reg_update) +
     tm_polygons('region_gams',title = 'Regions',breaks = c('u-egypt','m-egypt','e-delta','m-delta','w-delta')) 

enter image description here

谢谢。

解决方法

您可以通过将您的姓名定义为因子来更改情节顺序(在您的情况下,它们按字母顺序排列)。我使用了一个开放数据集 (https://data.humdata.org/dataset/egypt-administrative-boundaries-levels-0-3),其中包括埃及行政级别的形状。为简单起见,我在这里只选择了以 A 开头的名称:

library(tmap)
library(sf)
library(tidyverse)

regions <- st_read(dsn = "egy_admbnda_adm1_capmas_20170421/egy_admbnda_adm1_capmas_20170421.shp") %>% 
  as.tibble() %>% 
  filter(str_detect(ADM1_EN,"A")) %>% 
  mutate(ADM1_EN = factor(ADM1_EN,levels = c("Assiut","Aswan","Alexandria"))) %>% 
  st_as_sf()

tm_shape(regions) +
    tm_polygons("ADM1_EN")

在左侧,您会看到没有 mutate() 行的结果(名称按字母顺序排列),右侧是通过因子定义新顺序后的结果。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。