r - 带有 g_legend 的水平图例

标签 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)}

最佳答案

我也遇到了同样的问题,刚刚解决了。您必须将图例选项添加到“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),

然后就可以了。

关于r - 带有 g_legend 的水平图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799857/

相关文章:

r - 如何使用 R 个性化时间线?

r - 如何使用 plotly 在 R 中将每个带有数据子集的多条轨迹/趋势线添加到单个散点图

r - 从 geom_point 连接 position_dodge 点

r - ggmap不显示 map

r - 使用 R 进行高精度求和,涉及二项式系数和对数

shell - 如何从 R 或/和 Matlab 运行 shell 脚本?

r - 根据现有变量的条件,使用 for 循环在 r 中创建新变量

r - 我应该在 API GET 请求中的何处插入 API key ?

r - ggplot 中重叠图的图例

r - 使用 ggplot2 绘制分面或非分面(即重叠)时的不同直方图