1. ホーム
  2. r

プロットに影響を与えずに ggplot2 の凡例外観を制御する

2023-09-29 18:24:01

質問

ggplot2でこんな感じで線を引いています。

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

<イグ .

凡例マークが小さいので、もっと大きくしたいです。大きさを変えるとプロット上の線も変わってしまいます。

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

<イグ .

しかし、私は凡例の中でだけ太い線を見たいのであって、プロット上の線は細くして欲しいのです。私は 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"))

<イグ

ポイントも使ってみました。

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

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

プロットには線を、凡例には点/点を使いたいと思いました。

ということで、2つのことをお聞きしています。

  1. プロットを変更せずに凡例の線の幅を変更する方法は?
  2. プロットでは線を描き、凡例では点/点/四角の線を描くには?

どのように解決するのですか?

凡例のみ線幅を変更するには、関数 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)))

<イグ

凡例に点を、プロットに線を表示するための回避策は、以下のようになります。 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)))

<イグ