代码之家  ›  专栏  ›  技术社区  ›  Jaccar

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

  •  2
  • Jaccar  · 技术社区  · 7 年前

    我用ggplot和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
    

    Example of issue

    (对颜色不匹配表示歉意!)

    1 回复  |  直到 7 年前
        1
  •  3
  •   tifu    7 年前

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

    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
    

    enter image description here