多个图的R问题pdf win7

时间:2011-03-10 04:08:18

标签: r

我试图通过垂直堆叠两个图(a)和(b)来制作一个图(即,具有2行,1列的多个图)。

虽然我可以为我尝试的其他图表执行此操作,但使用ODE解算器包deSolve从数据生成的以下两个图表拒绝合并。在屏幕上,图(a)闪烁,我看着图(b)。保存图表会产生1个pdf文件,其中包含2页(每个图表在一个单独的页面上),而不是1个pdf文件和1个页面(我正在寻找将这两个图堆叠成一个图形)。

正如您从代码中看到的那样,我尝试了mfrow和布局方法都无济于事。任何帮助将不胜感激。

谢谢, 凯里

df1 <-function(t,y,mu)( list(c(y[2], mu*y[1]^3 - y[1] + 0.005 * cos(t))))
library(deSolve)
yini <- c(y1=0, y2=0)
df2 <-ode(y = yini, func = df1, times = 0:1050, parms = 0.1667)
t <- seq(0, 1050, length=10000)
x <- 0.24 * (1 - cos(0.012 * t)) * cos(t + sin(0.012 * t))
pdf("c:/users/name/Desktop/figure2.pdf", height = 3, width=8)
# par(mfrow = c(2, 1))
layout(matrix(c(1, 2), 2, 1, byrow = TRUE))
plot(df2, type="l", which="y1", ylab="x", xlab="t", main="(a)")
plot(t, x, type="l", main="(b)")
dev.off()

1 个答案:

答案 0 :(得分:3)

问题是deSolve个对象有自己的绘图方法,并且会覆盖布局中发生的事情。运行第一个绘图后,布局设置将完全撤消,并根据deSolve个对象的默认值配置显示。这就是为什么当第二个绘图写入第一个绘图时会出现闪光,因为不再有多面板显示。

绘图方法是?plot.deSolve - 此函数采用mfrow / mfcol参数,因此您可以按预期使用布局。

layout(matrix(c(1, 1, 2, 2), 2, 2, byrow = TRUE))
plot(df2, type="l", which = "y1", ylab = "x", xlab = "t", main = "(a)", mfrow = c(2, 1))
plot(t, x, type = "l", main = "(b)")