我有一个现有的绘图功能(也许是别人写的),它使用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
,因为其他人拥有它,或者我只是在调试,发现错误后就不需要多余的细节。
答案 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
我希望它能对您有所帮助!祝你好运。