带有g_legend的水平图例

时间:2013-11-05 21:57:14

标签: r ggplot2

我正在使用通常引用的g_legend函数从使用ggplot2制作的图形中提取图例,这样我就可以使用grid.arrange组织多个图表。我希望图例是一行元素,这样我就可以轻松地将它放在网格的底部。但是,无论原始图上的格式如何,g_legend始终返回带有单个列的图例。有没有人知道强制传奇只有一行的方法?

#extract legend
#https://github.com/hadley/ggplot2/wiki/Share-a-legend-between-two-ggplot2-graphs
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)}

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我刚解决了。您必须在“p1.leg”中添加图例选项:

p1.leg <- ggplot(data,aes(v1, v2,colour=v3))+geom_area() + theme(legend.direction = "horizontal", legend.position = "bottom")
p1 <- ggplot(data, aes( v1, v2),

然后它有效。