1. ホーム
  2. r

[解決済み] ggplot2 の余分な凡例を削除する

2022-10-29 21:41:38

質問

シンプルなデータフレームで 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 レイヤーを作成します。

グループカラーを表示する凡例はそのままで、アルファ設定を表示する凡例はどうすればいいのでしょうか。

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

美学は セット または マップされた の中で 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のコメントが的確なので、私の回答をより包括的にしました。