2011-03-10 41 views
1

我想通過垂直堆疊兩個圖(a)和(b)(即多行2列1列)來製作一個圖。R多個圖的問題pdf win7

雖然我可以對其他圖進行此操作,但我嘗試過使用ODE求解程序包deSolve從數據生成的以下兩個圖,但它們拒絕合併。在屏幕上,情節(a)閃爍並且我正在看情節(b)。將地塊保存爲1頁2頁pdf格式的文件(每個地塊在一個單獨的頁面上),而不是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() 
+0

我認爲問題在於deSolve對象有自己的繪圖方法,並且這會覆蓋佈局所發生的情況。請參閱?plot.deSolve – mdsumner 2011-03-10 05:03:10

回答

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)") 
+0

嗨mdsummer,謝謝你解決這個問題。情節現在看起來很棒!最好的問候,凱里。 – Carey 2011-03-10 06:02:11