将图和图例保存为单独的文件?

时间:2015-01-08 15:25:56

标签: r ggplot2

我有一些数据集包含更多的图例条目,而不是可以用颜色轻松区分或者用符号显示。它实际上是一条彩虹,但是在如此多的传奇条目中,它们使得这些地块远远高于宽度。

由于传说并不像绘图的舒适尺寸那么重要,我只是在将图表保存到PNG之前预览并删除它们。

像这样:

library(ggplot2)
p <- ggplot(diamonds, aes(cut, depth)) + geom_point(aes(colour = factor(carat), size = price))
p
p <- p + theme(legend.position = "none")
p

然而,只有选择倾斜情节高度或完全踢出传奇,有点令人沮丧。一个简洁的妥协是将图例放在一个单独的PNG中,因此可以在必要时进行检查。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

library(ggplot2)
p <- ggplot(diamonds, aes(cut, depth)) + geom_point(aes(colour = factor(carat), size = price))

#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)
}

mylegend <- g_legend(p)
library(grid)
grid.draw(mylegend)

只需绘制不同的设备。

答案 1 :(得分:1)

cowplotggpubr可以做到这一点。

library(cowplot)
my_legend <- get_legend(your_ggplot_object)
library(ggpubr)
as_ggplot(my_legend)