ggplot 图例键和使用 treemapify 的标签之间的间距

Spacing between ggplot legend key and labels using treemapify

我有一个使用 ggplot 和 treemapify 制作的树状图。这很好,但图例被奇怪地压扁了——标签一直到 keys/symbols/icons 的边缘。这不会发生在其他地块上,所以这可能是一个 treemapify 问题?

当我搜索答案时,大多数都是关于更改标签之间的间距,例如,但这不是我想要做的。我找到了 this 个似乎是我的问题的答案。我想我可以在标签中添加空格!但感觉必须有更好的解决方案,特别是因为标签是我的列名并且其他地方不需要空格,因为出于某种原因,图例间距只是该图的一个问题。

我也尝试过 theme(legend.text.align = 0.2),例如,但这显然是不正确的,因为它是关于对齐,而不是边距或填充。

library(ggplot2)
library(treemapify)

tree_data <- as.data.frame(matrix(0, ncol = 0, nrow = 12))
tree_data$colour <- as.character(c("Red", "Red", "Blue", "Green"))
tree_data$shade <- as.character(c("Ruby", "Merlot", "Ink", "Olive",
                                  "Garnet", "Wine", "Royal", "Emerald",
                                  "Brick", "Berry", "Navy", "Apple"))
tree_data$freq <- sample(100, size = nrow(tree_data), replace = TRUE)

treeMapPlot <- ggplot(tree_data, aes(area = freq, fill = colour, label = shade, 
                                          subgroup = colour)) +
  geom_treemap(color = "gray20") +
  geom_treemap_subgroup_border() +
  geom_treemap_text(colour = "white", place = "topleft", reflow = T, padding.x = grid::unit(1.5, "mm"),
                    padding.y = grid::unit(2, "mm"), size = 20) +
  theme(plot.title = element_text(hjust = 0.5, size = 16),
        legend.title = element_blank())

treeMapPlot

(颜色不匹配请见谅!)

您可以通过在 theme 中指定 legend.spacing.x 来在图例符号和文本之间手动添加边距。这个怎么样:

treeMapPlot <- ggplot(tree_data, aes(area = freq, fill = colour, label = shade, 
                                 subgroup = colour)) +
  geom_treemap(color = "gray20") +
  geom_treemap_subgroup_border() +
  geom_treemap_text(colour = "white", place = "topleft", reflow = T, padding.x = grid::unit(1.5, "mm"),
                padding.y = grid::unit(2, "mm"), size = 20) +
  theme(plot.title = element_text(hjust = 0.5, size = 16),
    legend.title = element_blank(),
    legend.spacing.x = unit(0.2, 'cm'))

treeMapPlot