2012-03-02 14 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()を使用して境界線を再構築します(ちなみに、凡例の境界線を1つだけ抑制する方法はありますか?これは機能しますが、insetの値で多くの試行錯誤が必要です。 insetlegend()中の

デフォルト値はc(0,0)あるが、これらは明らかにその伝説の要素内のテキストの長さに基づいて、legend()への最初の呼び出しで調整します。 ?legendによれば、legend()コールの値は、

"凡例のテキストのxおよびy座標を与える長さの長さ(凡例)の数値ベクトルを含みます。

これは、2番目の呼び出しの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

あなたはより細かい制御のためのlegend()への2つの呼び出しを作りたい場合は代わりに、引数でtrace=TRUEを指定すると、それは、xとyはあなたが必要とする座標戻ります。

+0

ありがとう、私はそれを作っていたよりはるかに簡単です! – ChrisW

関連する問題