关于 r:左对齐图例标签与 ggplot

Left align legend labels with ggplot

我有一个这样的图例:

Legend

我尝试使用 legend.key.widthlegend.title.alignlegend.spacing.x 到目前为止没有运气...

这是一个最小的可重现示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
library(tidyverse)

# Test data, it does not matter.
data <- tibble(
  color = c(rep('color-a', 5), rep('color-b', 5), rep('color-c', 5), rep('color-d', 5)),
  x = rep(seq(0, 4, 1), 4),
  y = c(seq(0, .4, 0.1), seq(0, .4, 0.1) + 0.1, seq(0, .4, 0.1) + 0.3, seq(0, .4, 0.1) + 0.4)
)

# Plot
ggplot(data, aes(x = x, y = y, color = color)) +
  scale_color_discrete(guide="legend") +
  geom_point() +
  theme_minimal() +
  theme(legend.position ="bottom")


您不能将它们比现有的更多左对齐。但是,您可以设置一个 margin,以在文本右侧之间创建更多空间:

1
2
3
4
5
6
7
8
ggplot(data, aes(x = x, y = y, color = color)) +
  scale_color_discrete(guide='legend') +
  geom_point() +
  theme_minimal() +
  theme(
    legend.position ="bottom",
    legend.text = element_text(margin = margin(0, 50, 0, 0))) ## <- here
  )

enter