【问题标题】:ggplot2: suppress drawing of plot when calling print methodggplot2:调用打印方法时抑制绘图
【发布时间】:2012-10-11 14:57:39
【问题描述】:

作为this question 的后续行动,假设我这样做:

p <- ggplot(mtcars, aes(mpg)) + geom_histogram(aes(y = ..count..)) + facet_wrap(~am)
r <- print(p)

在第二行中,我调用 print 方法,以便在向绘图对象添加其他图层之前以编程方式检查其返回值。

我的问题:有没有办法抑制此时绘制情节?

【问题讨论】:

  • 那为什么不直接看p呢。为什么要重新分配给 r?
  • @TylerRinker pr 最终成为完全不同的对象。使用str(p)str(r) 等,或点击链接的问题查看原因;)
  • 哦,哇,真的很不一样。
  • 没错。 r 包含我需要的信息。有关详细信息,请参阅链接的问题。

标签: r printing ggplot2


【解决方案1】:

如果您查看ggplot2:::print.ggplot 内部,您会发现您可能想要使用ggplot_build()ggplot_gtable(),具体取决于您要检查的信息。

ggplot_build 返回 ggplot2 的 print 方法不可见地返回的数据对象,所以这可能就是您所追求的。 ggplot_gtable 返回 grobs 本身,允许直接修改网格图形对象本身。

【讨论】:

  • ggplot_build 就是门票。谢谢。
【解决方案2】:

怎么样:

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

【讨论】:

  • 我试图完全避免弹出绘图窗口。如果我理解您的建议,您是说将绘图发送到文件而不是图形设备,然后删除文件。是对的吗?我想这可以达到目的,但它似乎不如简单地不创建情节那么优雅。
  • @DaveBraze 这不是必需的。看我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2015-05-30
  • 2014-03-13
相关资源
最近更新 更多