如何在由mfrow分割的R图形设备中编辑上一个图

时间:2019-05-27 17:08:07

标签: r plot graphics

我有一个现有的绘图功能(也许是别人写的),它使用mfrow在同一图形设备上绘制多个图形。我想编辑已经绘制的图形(例如,也许在图1上添加参考线)

par(mfrow = c(1, 2))
plot(1:10)
hist(1:10)
# Oh no!  I want to add abline(a = 0, b = 1) to the first plot!

假定此代码嵌套在另一个绘图函数中 PlotABunchOfStuff(1:10)我无法修改。

我不想修改PlotABunchOfStuff,因为其他人拥有它,或者我只是在调试,发现错误后就不需要多余的细节。

1 个答案:

答案 0 :(得分:0)

如果您准备使用ggplot,我想您可以在下面的代码中找到想要的东西:

df <- data.frame(x = 1:10, y = 1:10)
g1 <- ggplot(df, aes(x = x, y = y)) +
  geom_point()
g2 <- ggplot(df, aes(x = x, y = y)) +
  geom_line()

grid.arrange(g1, g2)

g1 <- g1 + geom_smooth(method='lm',formula=y~x)  # it could be anything else !

grid.arrange(g1, g2)

编辑1: 另一个解决方案是:

在Windows中创建一个图形对象,如果filename =“”,则将在dev.off()之后销毁该对象:

win.metafile(filename = "")

默认情况下,inhibit不允许记录剧情,因此我们使用enable

dev.control('enable')
plot(1:10)
p <- recordPlot() 
dev.off()
replayPlot(p)

我对Stackoverflow的启发:

R plot without showing the graphic window Save a plot in an object

我对R的启发:

https://www.rdocumentation.org/packages/grDevices/versions/3.6.0/topics/dev https://www.rdocumentation.org/packages/grDevices/versions/3.6.0/topics/recordPlot

我希望它能对您有所帮助!祝你好运。