2012-09-07 22 views
4

我有一個有4個不同條目的圖例,我想在2x2網格中排列而不是水平或垂直排列。我正在提取傳奇以供單獨使用,這就是爲什麼我需要這種不尋常的安排。有任何想法嗎?在網格中排列ggplot2圖例項目

下面的代碼生成在垂直一列的所有條目的傳說:

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) 

回答

6

嘗試增加guides(colour = guide_legend(nrow = 2))你的陰謀。

+0

很簡單,謝謝! – mlubin