web-dev-qa-db-ja.com

プロットに影響を与えずにggplot2の凡例を表示する

私はこのようにggplot2でラインをプロットしています:

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + theme_bw()

current plot

伝説のマークは小さいと思うので、もっと大きくしてほしい。サイズを変更すると、プロットの線も変更されます。

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line(size=4) + theme_bw()

thick plot lines

ただし、凡例には太い線だけを表示し、プロット上の線は細くしたいだけです。 legend.key.sizeを使用しようとしましたが、線の幅ではなくマークの正方形が変更されます。

library(grid)  # for unit
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw() + theme(legend.key.size=unit(1,"cm"))

big legend keys

また、ポイントを使用しようとしました:

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + geom_point(size=4) + theme_bw()

しかし、もちろんそれはプロットと凡例の両方に影響します:

points

プロットに線を、凡例に点/点を使用したかった。

だから私は2つのことについて尋ねています:

  1. プロットを変更せずに凡例の線の幅を変更するにはどうすればよいですか?
  2. プロットに線を描画するが、凡例にポイント/ドット/正方形を描画する方法は?
67
baltazar

凡例の行幅のみを変更するには、関数guides()を使用してから、colour=guide_legend()override.aes=とともに使用し、size=を設定する必要があります。これは、プロットで使用されるサイズをオーバーライドし、凡例だけに新しいサイズ値を使用します。

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+
       guides(colour = guide_legend(override.aes = list(size=3)))

enter image description here

凡例のポイントとプロットの回避策でラインを取得するには、geom_point(size=0)を追加してポイントを非表示にし、guides()linetype=0を設定してラインを削除し、size=3を追加して大きなポイントを取得します。

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+
       geom_point(size=0)+
       guides(colour = guide_legend(override.aes = list(size=3,linetype=0)))

enter image description here

100
Didzis Elferts