作为对这个问题的跟进,假设我做这样的事情:
p <- ggplot(mtcars, aes(mpg)) + geom_histogram(aes(y = ..count..)) + facet_wrap(~am)
r <- print(p)
在第二行中,我调用 print 方法,以便在向绘图对象添加其他图层之前以编程方式检查其返回值。
我的问题:有没有办法抑制此时绘制情节?
如果你往里面看,ggplot2:::print.ggplot
你会发现你可能想要使用的是ggplot_build()
or ggplot_gtable()
,这取决于你想要检查的信息。
ggplot_build
返回 ggplot2 的 print 方法不可见地返回的数据对象,所以这可能就是您所追求的。ggplot_gtable
返回 grobs 本身,这允许直接修改网格图形对象本身。
怎么样:
#Create a temporary plot file
png('TMP_PLOT')
#Inspect return value of plot
#When you're done
dev.off()
#Delete the plot you just generated
unlink('TMP_PLOT')