Управляйте легендами в ggplot с помощью geom_bar и geom_point - PullRequest
1 голос
/ 07 февраля 2020

Я строю гистограмму и линейный / точечный график на одном и том же графике, и я пытаюсь получить две легенды, одну для точек и одну для столбцов.

Однако я заканчиваю с 3 легендами (вместо двух), и легенда для баров имеет очки. Вы можете помочь мне? Вот MWE

library("ggplot2")

df2 <- data.frame(Height=rep(c("low", "high"), each=3),
                  Month=rep(c("Jan", "Feb", "March"),2),
                  Trial =c(7, 4, 10, 2, 4, 12),
                  Success = c(2, 2, 7, 1, 3,  8))


ggplot(data=df2, aes(x=Month, y= Success, fill= Height)) +
  ggtitle("Title") +
  geom_bar(stat="identity", position=position_dodge()) +
  geom_line(aes(x=Month, y=Success/Trial*max(Success), group = Height, linetype = Height, colour = Height) , size = 3, alpha = 0.7) +
  geom_point(aes(x=Month, y=Success/Trial*max(Success), colour = Height), size = 11) +
  geom_text(aes(label=round(Success/Trial,2), x=Month, y=Success/Trial*max(Success)), color="white", size=3.5, fontface = "bold") +
  scale_y_continuous(sec.axis = sec_axis(~. *1/max(df2$Success) , name="Proporion of success")) +
  labs(x = "Month", y="#Success", fill = "Number of Success", colour = "Proportion of success") +
  scale_colour_manual(values=c('#909999','#E69000'))+
  scale_fill_manual(values=c('#099999','#069F00'))

output image

Я пытался использовать разные версии guides(colour = FALSE, group = FALSE, fill = FALSE), но безуспешно. Я хочу удалить легенду "Высота" и удалить большие черные точки в легенде "Число успеха".

1 Ответ

3 голосов
/ 07 февраля 2020

Вы получаете три легента, потому что вы отображаете цвет, заливку и тип линии. Поэтому вы хотите отключить руководство по типу линии и удалить фигуры из легенды заливки. Вы можете сделать это с помощью

guides(
  linetype = FALSE, 
  fill = guide_legend(override.aes = list(shape = NA))
)

enter image description here

...