ggplot2の余分な凡例を削除します


93

を使用して線と点のプロットを組み合わせて実行しようとしている単純なデータフレームがありますggplot2。私のデータが次のようになっていると仮定します。

df <- data.frame(x=rep(1:10,2), y=c(1:10,11:20), 
                 group=c(rep("a",10),rep("b",10)))

そして、私はプロットを作成しようとしています:

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8))
g

結果は、1つの例外を除いて正常に見えます。alpha私のgeom_pointレイヤーを示す追加の凡例があります。

<code> geom_point </ code>の透明性に関する追加の凡例

凡例にグループの色を表示し、アルファ設定を表示しないようにするにはどうすればよいですか?

回答:


177

美学は、通話内で設定またはマッピングできます ggplot

  • 内部aes(...)で定義された美学がデータからマッピングされ、凡例が作成されます。
  • 美学は、外部で定義することにより、単一の値に設定する こともできますaes()

この場合、を設定 alpha = 0.8してマッピングし たいようcolour = groupです。

これをする、

定義のalpha = 0.8外側に配置しaes()ます。

g <- ggplot(df, aes(x = x, y = y, group = group))
g <- g + geom_line(aes(colour = group))
g <- g + geom_point(aes(colour = group), alpha = 0.8)
g

ここに画像の説明を入力してください

マップされた変数についてguide = 'none'は、適切なscale_...呼び出しで使用することにより、凡例の表示を抑制することができます。例えば。

g2 <- ggplot(df, aes(x = x, y = y, group = group)) + 
        geom_line(aes(colour = group)) +
        geom_point(aes(colour = group, alpha = 0.8))
g2 + scale_alpha(guide = 'none')

これは同じプロットを返します

編集 @Joranのコメントは的確です、私は私の答えをより包括的にしました


18
OPは美的感覚をマッピングするのではなく設定しているため、これは正しい方法ですが、一般に、のようなものを使用して凡例の表示を抑制することができますg + scale_alpha(guide = "none")
joran 2012

確かに。答えは詳しく説明されています。OPの問題だけでなく、包括的な回答を得る方が理にかなっています。
mnel 2012

4
説明を追加していただきありがとうございます。これは、ggplotの哲学を理解するのに大いに役立ちます。
Wilduck 2012

2
私はggplotを1年以上使用していますが、マップされた変数と設定された変数の違いを理解していません。これは私が今まで見た中で断然最高のSOの答えです、おめでとうございます。
アミットコーリ2015年

1
@theforestecologistそれは、group美学がそれ自体でスケールやガイドを生成しないためです。それは常に何か他のものを修正するようなものです。「グループ」の美学の伝説は決して得られません。
joran 2018年

43

不要なshow.legend = F部分の後にコードを追加するだけです。

g <- ggplot(df, aes(x=x, y=y, group=group))
g <- g + geom_line(aes(colour=group))
g <- g + geom_point(aes(colour=group, alpha = .8), show.legend = F)

1
これは、(あまりにもクリアものの誤解の多くまで)設定美学対マッピングよりもはるかに直感的です
Wassadamo

1

ggplot2の古いバージョン(0.9.2より前のバージョン、2012年後半にリリース)の場合、この回答は機能するはずです。

でこれを試しましたが、機能colour_scaleしませんでした。このcolour_scale_hueアイテムは、デフォルトのパラメータを持つ関数のように機能しているようですTRUE。追加scale_colour_hue(legend=FALSE)して動作しました。

これがggplotのすべてのカラースケールアイテムに当てはまるかどうかはわかりません


3
使用legendscale_*の呼び出しが良く行うために、推奨されませんscale_colour_hue(guide = "none")
グレゴールトーマス

3
legend=FALSE@shujaaのコメントで指摘されているように、が非推奨であることを考慮すると、これは事実上重複した回答です。つまりguide = "none"scale_fill/color*関数にを追加します。
デビッド・ルバウアー2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.