Ich habe eine Legende mit 4 verschiedenen Einträgen, die ich nicht horizontal oder vertikal, sondern in einem 2x2-Raster anordnen möchte. Ich extrahiere die Legende für eine separate Verwendung, weshalb ich diese etwas ungewöhnliche Anordnung benötige. Hat jemand eine Idee?
Der folgende Code erzeugt die Legende mit allen Einträgen vertikal in einer einzigen Spalte:
require(ggplot2)
library(grid)
library(gridExtra)
dat <- data.frame(x=c(1,2,1,2,1,2,1,2),y=c(1,2,3,4,2,3,4,5),color=factor(c("a","a","b","b","c","c","d","d")))
p = ggplot(dat)
p = p + geom_line(aes(dat$x,dat$y,color=dat$color))
p = p + scale_colour_manual (values=dat$color,name="")
#print(p)
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
return(legend)}
legend <- g_legend(p)
grid.arrange(legend)