6 Stimmen

Anordnen von ggplot2 Legendenelementen in einem Raster

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)

9voto

Matthew Plourde Punkte 42749

Versuchen Sie, Folgendes hinzuzufügen guides(colour = guide_legend(nrow = 2)) zu Ihrem Grundstück.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X