2013-11-25 551 views
2

這是我的代碼;基本上我把四張圖放在同一個繪圖設備上,並在每個圖上放置一個圖例。 [編輯:我正在與RStudio]R如何使圖例位置獨立於圖形大小

dev.new() 
par(mfrow=c(2,2), oma=c(0,0,2,0)) 

#plot1 
plot(parameters...) 
par(new=TRUE) 
plot(parameters, col="red") 
legend("bottomright", c("seed match", "background"), bty="n", lty=c(1,1), 
    col=c("red","black"), cex=0.8, inset=0) 

#plot2 
plot(parameters...) 
par(new=TRUE) 
plot(parameters..., col="red") 
legend("bottomright", c("seed match", "background"), bty="n", lty=c(1,1), 
    col=c("red","black"), cex=0.8,inset=0) 

#etc. same for plot2 and plot 3 

title("bla bla bla", outer=TRUE) 

我有兩個問題與此。 (1)儘管我指定了「bottomright」,但圖例看起來並沒有對齊到右下方,我更寬地調整圖形的水平尺寸,圖例和圖表右側之間的空間更大。

(2)的空間中的圖例佔用量是不充分的。我嘗試修改cex =,但只處理字體大小,圖例佔據的整個空間仍然存在,這意味着字體越小,線條之間的空間就越大。我希望這個傳說能夠少一些「傳播」。

插圖 這看起來有點OK,但我想降低傳說裏線之間的空間: before resizing

但是,當我水平調整它沒有。我想在圖表的右側安插圖例。 after resizing

+0

您是否在嘗試重新調整輸出設備大小後嘗試打印圖表? – Roland

+0

Geez,所以我需要我的輸出設備的準確大小,我想要我的圖時它的出口?這使得它超硬工作的一個11" 的Mac空氣... – biohazard

+0

沒有,使用的功能(設備),如'png'或'pdf',它允許你指定大小 – Roland

回答

2

(1): 由於您的圖形都以相同的方式縮放,因此可以使用x和y座標來定位圖例,而不是關鍵字。例如: -

legend(x = 0.25, y = 35, c("seed match", "background"), bty="n", lty=c(1,1), col=c("red","black"), cex=0.8, inset=0) 

(2): 我不知道是否存在的方法來處理通過傳奇()行距,我沒有找到一個。當圖例非常漂亮時,我總是通過mtext(),abline()等手工生成圖例。這是更多的工作,但你可以控制你的傳奇的每一個方面。最後

一個評論:我想你想你的圖形喜歡不是你的屏幕上,但在某種紙或呈現不錯。我總是使用像cairo_ps(),svg()或jpeg()這樣的設備生成圖表(僅在極少數情況下,因爲它是柵格,而不是基於矢量的)。與導出R Graphics Device相比,這些功能可以更好地控制圖形。但是圖形看起來隨着設備而變化的方式,每一個都需要單獨配置。最好只爲你最終要使用的那個做。

我希望這可以幫助

+0

如果您需要光柵圖形,請勿使用'jpeg',請使用'png'。 – Roland

0

而不是使用"bottomright"的,你可以使用兩次legend(),對於位置的每個傳奇元素的值選擇諸如

legend(x1,y1,c("seed match"), bty="n", lty=1, col="red", cex=0.8)

的第一個。這樣你可以單獨選擇他們的位置,並因此控制它們之間的間距。我認爲這解決了你的兩個問題。

+0

我發佈的時間早於接受的答案,並提供瞭解決方案,可以解決位置和間距問題... * sad * – Ouistiti

相關問題