2010-09-03 99 views
10

我試圖在一個3x2佈局的圖像中輸出6個圖。我想在頂行和底行之間放置額外的空間。這可能使用R嗎?我已經瀏覽了par和plot的文檔,似乎找不到合適的選項。在一個圖的子集之間添加額外間距

下面是一些示例代碼:

a = rnorm(100,100,10) 
b = rnorm(100,100,10) 

par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(2,2,2,2)) 
hist(a) 
hist(b) 
plot(a,b) 
plot(a,b) 
plot(a,b) 
plot(a,b) 

下面是該代碼的輸出:


alt text


這裏就是我想要它像輸出(我修改了這個形象e在外部編輯器中)。請注意頂行和底行之間的額外空間。


alt text


回答

9

layout()功能是你的朋友。你可以例如定義一個陰謀矩陣

1 2 
3 4 
5 6 
7 8 

然後爲第三個和第四個放置空白圖。或者只是堅持六,並致電par在底部添加額外的空間。

+1

謝謝 - layout()對我來說是新的。像這樣的東西似乎做我想要的:a = layout(矩陣(c(1,2,0,0,3,4,5,6),4,2,byrow = TRUE),widths = c(1, 1),高度= c(4,1,4,4)) – chrisamiller 2010-09-03 19:46:13

+2

是的,佈局是美好的,而且非常有用。現在的孩子們談論的只是ggplot2,所以它往往會被遺忘:)良好的捕獲重零0來省略重複,而且你的寬度和高度恰到好處。 – 2010-09-03 19:59:00

8

我能想到的方式有三種:

1)使用mar圖形參數來設置情節保證金

您可以檢索當前的利潤率與

currmar <- par()$mar 

您可以

par("mar"=c(5, 4, 4, 2)) 

與設置新的頁邊距數字是底部,左,上,右頁邊距(見?par

您可以多次調用par每個情節,這樣你就可以只更改頂部圖的底部邊距。

2)使用佈局產生不均勻佈局網格(見?layout的例子)

3)除.SVG或.pdf格式的情節,然後使用Inkscape中(或任何軟件,你喜歡)移動的地塊。

4

我認爲去mar是我會這樣做的。然而,就像它看起來,你想要所有的地塊都是一樣的。因此,您需要在每一個頂部和底部的圖上都有相同的金額。
在你的情況下,人們可以使用下列號碼:
1行:par(mar=c(7,4,4,2))
2行:par(mar=c(5,4,6,2))
3。行:par(mar=c(7,4,4,2))

這樣所有的地塊佔據相同的高度。修改第一個和第三個數字,使它們對於每個情節都是相同的,以實現這一點。 但是,請注意:最下面的一排地塊下方有一些額外的白色空間。

+0

不錯。我已經使用layout()編寫了我的解決方案,但是這也會起作用。謝謝。 – chrisamiller 2010-09-03 21:37:20

相關問題