Как выровнять ключ легенды и текст в ggplot? - PullRequest
2 голосов
/ 08 января 2020

У меня есть следующий фрейм данных:

 df = data.frame(
  x = c(1:10, 1:10),
  y = 1:20,
  group = rep(c('male', 'female'), each = 10))

ggplot(df, aes(x=x, y=y, color = group)) + 
  geom_smooth()

Как видите, текстовая легенда (мужчина, женщина) появляется справа от ключевой легенды (синяя и красная горизонтальная полоса). По языковым причинам я хочу наоборот: ключевая легенда должна быть справа от текстовой легенды. Я нашел решение только для выравнивания текста по левому или правому краю, но не для того, чтобы поставить ключ до или после текста. (См. Здесь Выровнять текст легенды в ggplot )

ggplot(df, aes(x=x, y=y, color = group)) + 
  geom_smooth() +
  theme(
    legend.text.align = 1)

Есть идеи?

1 Ответ

4 голосов
/ 08 января 2020

Я надеюсь, что это то, что вы хотели

library(ggplot2)

df = data.frame(
  x = c(1:10, 1:10),
  y = 1:20,
  group = rep(c('male', 'female'), each = 10))

ggplot(df, aes(x=x, y=y, color = group)) + 
  geom_smooth() +  
  theme(legend.position = 'right') + 
  guides(color = guide_legend(title.position = "top", 
                              # hjust = 0.5 centres the title horizontally
                              title.hjust = 0.5,
                              label.position = "left")) 
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Создано в 2020-01-08 пакетом Представить (v0 .3.0)

...