Разбить легенду в двух столбцах, сохраняя переопределение формы - PullRequest
0 голосов
/ 12 февраля 2019

У меня проблема ggplot.Вот пример данных:

df <- data.frame(x = rep(1:5,5),
                 type2 = c(rep(letters[1:2],each = 10),rep("c",5)),
                 type1 = rep(LETTERS[1:5],each = 5), 
                 value = unlist(lapply(-2:2,function(a){rnorm(5,mean = a, sd = 1)})))

library(ggplot2)

plotcolor <- c( "#99d8c9","#2ca25f","#cbc9e2","#9e9ac8","#e34a33")
p <- ggplot(df,aes(x,value,color = type1,fill = type1,shape = type2))+
  geom_point(size = 5)+
  theme_light()+
  labs(title =  "",
       color = "Method",
       fill = "Method",
       shape = "")+
  geom_hline(yintercept = 0)+
  guides(colour = guide_legend(override.aes = list(shape =  c(21,21,24,24,22),
                                                   linetype = c(rep("blank",5)),
                                                   fill = plotcolor,
                                                   color = plotcolor)))+
  scale_shape(guide = FALSE)+
  scale_colour_manual(values = plotcolor)
p

, который дает enter image description here

Теперь я хочу разбить легенду на два столбца по соображениям пространства.Я попытался

p + guides(color=guide_legend(ncol=2))

, но он удалил часть override моей легенды, оставив только точки:

enter image description here

p + guides(color=guide_legend(ncol=2),
           fill =guide_legend(ncol=2) ,
           shape = guide_legend(ncol=2))

тоже не работал.У кого-нибудь есть идеи, как бороться с этой конкретной проблемой?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете указать ncol в пределах существующего guide_legend (не используйте его несколько раз):

  guides(colour = guide_legend(override.aes = list(shape = c(24,24,22,22,21),
                                                   linetype = c(rep("blank",5)),
                                                   fill = plotcolor,
                                                   color = plotcolor),
                               ncol = 2))+

enter image description here

...