假设我画了这样的事情:
ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point()
然后我意识到我忘记存储结果(即ggplot对象)。
如何检索与当前设备对应的ggplot对象?
是否有一些ggplot
函数我可以将cur.dev()
输入以检索关联的绘图对象,还是它永远消失了?
(注意 - 在这种情况下,我可以p <- .Last.value
,但我们假设我从那时起输入了一些命令,因此无法使用。
动机 - 为knitr
添加一个钩子,以自动将fig.cap
设置为图表的标题(如果有的话)。“
答案 0 :(得分:9)
它检索要修改或创建的最后一个绘图,并由ggsave
请注意,这是最后一个已修改 或 创建的
set_last_plot
是相关代码(请参阅source)
重要的是要注意,创建修改或渲染ggplot对象将设置最后一个绘图。
ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point()
f <- last_plot()
# will return the iris plot
p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()
last_plot()
# will return p
f
last_plot()
# is now f
它也不会计算使用grid
或gridExtra
的任何修改/操纵(例如grid.arrange
/ grid.text
答案 1 :(得分:1)
可以使用.Last.value
>require(ggplot2)
#Loading required package: ggplot2
ggplot(iris, aes(x=Sepal.Length, y=Petal.Length)) + geom_point()
gp <- .Last.value
gp
只要有赋值,这应返回已由网格函数修改的绘图对象。我不确定通过print
调用调解的行为是否属实。