2009-11-26 80 views
23

每當我運行這段代碼時,第一個圖就會覆蓋前一個圖。 R中沒有辦法分離出兩塊地塊?如何分離R中的兩個圖?

plot(pc) 
title(main='abc',xlab='xx',ylab='yy') 

plot(pcs) 
title(main='sdf',xlab='sdf',ylab='xcv') 

回答

14

在繪製之前嘗試使用par

par(mfrow = c(2, 1)) 
0

如果你想在單獨的窗口或文件中的2個圖,你可以在調用每個繪圖命令之前選擇新的設備。請參閱:??

設備

而且,

dev.cur

+0

好的,感謝所有偉大的建議傢伙, 瞭解了一些新的東西。 – phpdash 2009-11-27 21:36:52

38

如果你只是想看看在同一時間兩個不同的繪圖窗口打開,使用dev.new,例如

plot(1:10) 
dev.new() 
plot(10:1) 

如果你想繪製在同一個窗口兩個地塊則如巴蒂爾提到,設置mfrow參數。

par(mfrow = c(2,1)) 
plot(1:10) 
plot(10:1) 

如果你想更先進一點試一下,那麼你可以看看點陣圖形或ggplot,這兩者都是非常適用於創建空調地塊(其中數據的不同子集出現在不同的幀圖)。

晶格例如:

library(lattice) 
dfr <- data.frame(
    x = rep(1:10, 2), 
    y = c(1:10, 10:1), 
    grp = rep(letters[1:2], each = 10) 
) 
xyplot(y ~ x | grp, data = dfr) 

甲ggplot例子。 (你需要首先從CRAN下載ggplot。)

library(ggplot2) 
qplot(x, y, data = dfr, facets = grp ~ .) 
#or equivalently 
ggplot(dfr, aes(x, y)) + geom_point() + facet_grid(grp ~ .) 
+0

謝謝你,先生^ _ ^,dev.new()對我來說效果不錯 – espais 2012-02-23 03:59:55

+0

想給'mfcol'參數一些愛。它按照列的方式填充你的圖,這符合R中每個其他對象如何填充(主要是矩陣)。剛剛發現它。一直想知道爲什麼地塊是按行排列的......不要以爲我會回到'mfrow'! – MichaelChirico 2016-05-12 20:19:50

0

另一種答案是劇情指定爲一個對象,那麼你就可以顯示出來,當你想 即

abcplot<-plot(pc) title(main='abc',xlab='xx',ylab='yy') 

sdfplot<-plot(pcs) title(main='sdf',xlab='sdf',ylab='xcv') 

abcplot # Displays the abc plot 
sdfplot # Displays the sdf plot 
abcplot # Displays the abc plot again 
+1

這不起作用。 'plot'返回NULL。您無法以這種方式保存圖形的細節。如果你使用'grid'-based graphics(例如'lattice'),你的建議是可能的,例如。 'p1 < - xyplot(y〜x);打印(P1)'。 – 2009-11-30 11:00:51

4

你也可以嘗試佈局命令:

嘗試 layout(1:2)

plot(A)  
plot(B) 
2

試命令x11()每個小區之前,這裏有一個例子:

x11() 
plot(1:10) 
x11() 
plot(rnorm(10)) 

這將導致不同的情節窗口。您可以將「par」命令添加到這些x11()窗口中的任何一個,並獲得更多種類的圖,即在一個窗口中繪製4個繪圖,而在另一個窗口繪製大圖。