R tmap,图例格式 - 在第一个图例键中显示单个值
R tmap, legend formatting - display single value in the first legend key
我不确定如何或是否可以以休闲方式调整关键图例。
考虑这个例子:
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 是一个零,我被要求将它单独显示为零。
据我所知,仅使用 tmap
图例格式是不可能的 - 总会有小分隔符。 "to" 或者你用 legend.format
调用的 text.separator
覆盖它的任何东西。
您需要的是数据处理中的一个额外步骤 - 您必须创建一个带有标签的特殊变量,并根据此进行绘图。您可以完全控制级别,因此您可以将第一个作为独立的零。
为简单起见,我使用 ifelse
分成两个级别(加上 Non-European 个国家/地区的 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)
尽管已解决,但另一个更实用的替代方法是修改
tm_polygons
labels
tm_polygons(labels = c ("0", "more than five")
这种方式也适用于光栅文件
我不确定如何或是否可以以休闲方式调整关键图例。 考虑这个例子:
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 是一个零,我被要求将它单独显示为零。
据我所知,仅使用 tmap
图例格式是不可能的 - 总会有小分隔符。 "to" 或者你用 legend.format
调用的 text.separator
覆盖它的任何东西。
您需要的是数据处理中的一个额外步骤 - 您必须创建一个带有标签的特殊变量,并根据此进行绘图。您可以完全控制级别,因此您可以将第一个作为独立的零。
为简单起见,我使用 ifelse
分成两个级别(加上 Non-European 个国家/地区的 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)
尽管已解决,但另一个更实用的替代方法是修改
tm_polygons
labels
tm_polygons(labels = c ("0", "more than five")
这种方式也适用于光栅文件