2
我想在同一個圖上繪製兩種方法m1和m2返回的結果。在我的特殊情況下,第一個方法的標籤是一個表達式(因爲它有一個下標),第二個方法的標籤位於兩行(因爲它很長)。不過,有這兩個要求不工作:在R中,如何將表達式與圖例標籤中兩行的字符串結合起來?
l <- list("m1"=list(data=1:10, col=2, label=expression(paste("method 1 (", X[a], ")"))))
l[["m2"]] <- list(data=rep(3,10), col=3, label="method 2 (with a\nlong explanation)")
plot(l[["m1"]]$data, col=l[["m1"]]$col); points(l[["m2"]]$data, col=l[["m2"]]$col)
legend("topleft", legend=c(l[["m1"]]$label, l[["m2"]]$label), col=c(l[["m1"]]$col, l[["m2"]]$col), pch=1)
正如你可以在圖例中看到,第二個標籤(一上兩行)與第一標籤重疊。
問題消失的時候,不使用表達式爲第一標籤:
legend("topleft", legend=c("method 1 (Xa)", l[["m2"]]$label), col=c(l[["m1"]]$col, l[["m2"]]$col), pch=1)
問題也消失時所述第二標籤是在一行:
legend("topleft", legend=c(l[["m1"]]$label, "method 2 (with a long explanation)"), col=c(l[["m1"]]$col, l[["m2"]]$col), pch=1)
然而,我真的需要表達和兩條線。任何想法?
ps:我在Lubuntu上使用R 2.14.1。
感謝,但它是一種黑客攻擊的;)我希望它正確地放置符號的解決方案(PCH = 1),在2號線的中間。我也嘗試玩「adj」,但它做得不好。我想我必須完全手工製作傳奇。 – tflutre
@wfoolhill我們做不到!但是很容易破解圖例代碼。這個http://stackoverflow.com/questions/13644149/increasing-the-size-of-the-coloured-squares-on-histogram-legends-in-r應該可以幫到你 – agstudy