2011-06-28 52 views
7

我試圖創建一個圖的矩陣,但我希望左上角爲空。所以我使用:幀()中的錯誤:圖邊距過大

frame() 

與R迴應:

錯誤frame():圖利潤率太大

我用以下兩行創建我的佈局:

plotIDs <- matrix(c(1:16), 4, 4, byrow = T); 
layout(plotIDs, widths = c(0.5,1,1,1,1), heights = c(0.5,1,1,1,1)); 

這給了我以下佈局:

4 by 4 layout with first row and col at half height

如果我再發出frame()我得到上述錯誤。我究竟做錯了什麼?我看不出有什麼辦法來指定frame()命令的高度或寬度(只是plot.new()的別名)?

回答

9

該消息表示圖中的邊距過大,並且沒有留出足夠的空間用於繪圖。

嘗試減少保證金:

op <- par(mar = par("mar")/2) 
plot.new() ## this is optional for this example 
plot(1:10) 
par(op) ## tidy up to restore the default par setting 

你可以用框架()或plot.new(開始),或者只是繪製成第一個面板。請注意,您需要考慮每個不同面板的適當邊距設置,並優化標籤尺寸等。

對於一個完全空白的面板,你還不如徹底殺滅保證金:

op <- par(mar = rep(0, 4)) 
plot.new() 
par(op) 
7

可以使用佈局由矩陣圖案,0離開面板空白的,所以如果你用0:15代替1:16那麼第一個面板將是空白的,不需要跳過。當然,你會爲其餘的面板設定利潤和cex。

+0

這是比我更有見地的答案 – mdsumner

+0

@mdsumner,我不知道我的洞察力更強,這是一個快速的解決方法,但是你更深入地瞭解了實際導致錯誤的原因以及如何處理(這與我的工作仍然需要實際情節)。 –

+0

是的,現在你已經提供了更好的評論:) – mdsumner