简体   繁体   English

ggplot2中图例项之间的空格增加

[英]Increasing whitespace between legend items in ggplot2

My question is an extension of this question . 我的问题是这个问题的延伸。 Note that I'm using version 2.3.0 which is available on github , not yet on CRAN. 请注意,我使用的是2.3.0版本,该版本可在github上使用 ,而尚未在CRAN上使用。

library(ggplot2)

df <- data.frame("Categories" = rep(c("A", "B", "C"), 3),  
                 "values" = c(rep(0.39, 3), rep(0.37, 3), rep(0.24, 3)),
                 "X" = 1:9)

ggplot(df, aes(x = X, y = values, colour = Categories)) +
  geom_line() +
  theme(
        legend.position = "top",
        legend.spacing.x = unit(2, unit = "cm"),
        legend.title = element_blank()
        ) 

The code above creates this plot. 上面的代码创建了这个图。

在此处输入图片说明

I would like to move the legend labels (A, B, C) closer to their corresponding icons, as shown by the red arrows below, which would create more whitespace between the legend categories. 我想将图例标签(A,B,C)移到它们相应的图标附近,如下面的红色箭头所示,这将在图例类别之间创建更多的空白。 How would I do that? 我该怎么做?

在此处输入图片说明

One possible workaround is to add extra whitespace on the right of Categories using stringr::str_pad 一种可能的解决方法是使用stringr::str_pad在“ Categories ”右侧添加额外的空格。

library(ggplot2)

df <- data.frame("Categories" = rep(c("A", "B", "C"), 3),  
                 "values" = c(rep(0.39, 3), rep(0.37, 3), rep(0.24, 3)),
                 "X" = 1:9)

# define a custom function
str_pad_custom <- function(labels){
  new_labels <- stringr::str_pad(labels, 10, "right")
  return(new_labels)
}

ggplot(df, aes(x = X, y = values, colour = Categories)) +
  geom_line() +
  scale_color_brewer(labels  = str_pad_custom,
                     palette = "Dark2") +
  theme(
    legend.position = "top",
    legend.key.width = unit(1.0,  unit = "cm"),
    legend.spacing.x = unit(0.25, unit = "cm"),
    legend.title = element_blank()
  ) 

Created on 2018-06-15 by the reprex package (v0.2.0). reprex软件包 (v0.2.0)于2018-06-15创建。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM