2012-03-02 91 views
8

我想將圖上的圖例分解爲2,以便前3個元素與第4個元素間隔大約1行高度。我最初只是嘗試了第一個元素之前添加一個換行符:R圖中的傳說

legend("topright",col=1,lty=1:3,lwd=1,legend=c("leg1","leg2","\nleg3"), bty="n") 

但這似乎增加其間的差距都元素(這是記錄的行爲?)

然後我用了2分開的傳說,設置邊界到"n"和使用lines()來重建邊界(順便說一下,有沒有辦法僅僅抑制圖例的一個邊界?);雖然這可行,但它確實需要大量的試驗和錯誤,其值爲inset

insetlegend()的默認值是c(0,0),但這些顯然給legend()初始呼叫得到調整的基礎上,在傳說中的元素文本的長度。根據?legendlegend()呼叫的值包括

「長度長度(圖例)的數字向量,給出圖例文本的x和y座標。」

無論如何,這可以轉換爲第二個電話的inset的合適值,以便兩個傳說的元素排隊?

回答

22

只需在需要空間的參數中指定NAs即可。您需要將所有圖例參數作爲矢量。

set.seed(2) 
    plot(0:10, rnorm(11), col = sample(c("green", "blue"), 11, replace = TRUE), 
     pch = sample(c(3, 19), 11, replace = TRUE), xlim = c(0, 12)) 
    legend("topright", pch = c(3, 19, NA, 3, 19), 
     col = c("green", "green", NA, "blue", "blue"), 
     legend = c("green cross", "green dot", NA, "blue cross", "blue dot")) 

enter image description here

另外,如果你想爲更好的控制2調用legend(),在參數中指定trace=TRUE並返回你的x和y座標需要。

+0

謝謝,比我做得更容易! – ChrisW 2012-03-02 15:50:18