6

我不确定如何或是否可以以休闲方式调整关键图例。考虑这个例子:

library(tmap)
data(Europe)

my_map <- 
  tm_shape(Europe) +
  tm_polygons("well_being", textNA="Non-European countries", title="Well-Being Index") +
  tm_text("iso_a3", size="AREA", root=5) +
  tm_layout(legend.position = c("RIGHT","TOP"),
            legend.frame = TRUE)

在此处输入图像描述

我尝试legend.format = list(scientific = TRUE)过类似的东西:

my_map2 <- my_map +
  tm_layout(legend.format = list(scientific = TRUE))

这给了一个传奇:

在此处输入图像描述

但是,我希望是这样的:

在此处输入图像描述

在我的数据中,4 是零,我被要求将其单独作为零突出显示。

4

2 回答 2

4

据我所知,仅使用tmap图例格式是不可能的 - 总会有小分隔符。“to”或任何你用text.separatorfrom legend.formatcall 覆盖它的东西。

您需要的是数据处理中的一个额外步骤 - 您必须使用标签创建一个特殊变量,并据此绘制。您可以完全控制关卡,因此您可以将第一个关卡设为独立零。

为简单起见,我习惯将ifelse其分为两个级别(加上非欧洲国家的 NA),但您可以得到比这更花哨的...

Europe <- Europe %>%
  st_as_sf() %>%  # from sf package - makes Europe behave as a data.frame
  mutate(well_being_adj = ifelse(well_being < 5, "0", "more than five"))

my_map <- 
  tm_shape(Europe) +
  tm_polygons("well_being_adj", textNA="Non-European countries", title="Well-Being Index") +
  tm_text("iso_a3", size="AREA", root=5) +
  tm_layout(legend.position = c("RIGHT","TOP"),
            legend.frame = TRUE)
print(my_map)

在此处输入图像描述

于 2018-03-09T09:01:49.927 回答
3

尽管已解决,但另一个更实用的替代方法是修改 tm_polygons labels

tm_polygons(labels = c ("0", "more than five")

这种方式也适用于栅格文件

于 2019-04-15T21:04:41.510 回答