在 ggplot2 中增加图例项之间的空白

Phi*_*hil 4 r ggplot2

我的问题是这个问题的延伸。请注意,我使用的是 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()
        ) 
Run Code Online (Sandbox Code Playgroud)

上面的代码创建了这个图。

在此处输入图片说明

我想将图例标签(A、B、C)移近它们对应的图标,如下面的红色箭头所示,这将在图例类别之间创建更多空白。我该怎么做?

在此处输入图片说明

Tun*_*ung 6

一种可能的解决方法是在Categoriesusing的右侧添加额外的空格stringr::str_pad

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()
  ) 
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.2.0)于2018年 6 月 15 日创建。