R ggpubr: переместить заголовок легенды над клавишами легенды - PullRequest
1 голос
/ 10 марта 2019

Я борюсь с позицией легенды в ggpubr.Я знаю, что могу изменить положение легенды pe на ggpar(legend = "bottom").Но, как разместить заголовок легенды над ключами легенды?

В ggplot2 кажется, что guide_legend(title.position = "top") должно делать это, но как это сделатьработать с ggpubr?(спасибо @ c06n и ссылке здесь: https://ggplot2.tidyverse.org/reference/guide_legend.html). Я хотел бы объединить ggplot2 и ggpubr, но я не знаю точно, почему.

enter image description here

Пустой пример:

df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
                  dose=rep(c("D0.5", "D1", "D2"),2),
                  len=c(6.8, 15, 33, 4.2, 10, 29.5))

# Plot "len" by "dose" and
# Change line types and point shapes by a second groups: "supp"
p<- ggline(df2, "dose", "len",
       linetype = "supp", shape = "supp",
       color = "supp", palette = c("#00AFBB", "#E7B800"))

# Seems not working
ggpar(p,
  linetype = guide_legend(title = "My title", title.position = "top"))

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Эти опции работают здесь.

С ggpubr:

df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
                  dose=rep(c("D0.5", "D1", "D2"),2),
                  len=c(6.8, 15, 33, 4.2, 10, 29.5))

library(ggpubr)
p <- ggline(df2, "dose", "len",
       linetype = "supp", shape = "supp",
       color = "supp", palette = c("#00AFBB", "#E7B800"))

p + guides(colour = guide_legend(title.position = "top"))

Я не знаю почему, но если я установлю руководство для другой эстетики, положение названия легенды не изменится:

p + guides(shape = guide_legend(title.position = "top"))
p + guides(linetype = guide_legend(title.position = "top"))

Это хороший вопрос для ggplot2 экспертов.

А вот то же самое работает в ggplot2:

library(ggplot2)
ggplot(df2, aes(x = dose, y = len, colour = supp)) +
  geom_line(aes(group = supp, linetype = supp)) +
  geom_point(aes(shape = supp)) +
  scale_colour_manual(values = c("#00AFBB", "#E7B800")) +
  theme_classic() +
  theme(legend.position = "top") +
  guides(colour = guide_legend(title.position = "top"))
1 голос
/ 10 марта 2019

Я не знаю ggpubr, похоже на обёртку для ggplot2.Если это так, и / или он реализовал ту же функциональность, что и ggplot2, вы сможете достичь этого с помощью legend guide, см. здесь .Я думаю, что title.position вам нужно отрегулировать.

Если вы не можете добиться этого с помощью ggpubr, я предлагаю вместо этого использовать ggplot2, возможно, подгоняя тему под свои нужды.

Редактировать.У @markus есть ответ, так что все в одном месте:

p <- ggline(df2, "dose", "len",
           linetype = "supp", 
           shape = "supp",
           color = "supp", 
           palette = c("#00AFBB", "#E7B800")) +
  guides(color = guide_legend(title.position = "top", 
                              title.hjust = 0.5))

Интересный вопрос от @Bruno Pinheiro о том, почему будет работать только colorfill), но не shape или linetype.Это будет актуально, если сюжет должен быть монохромным.Все три должны работать одинаково хорошо как факторы группировки.

У кого-нибудь есть идея?

...