web-dev-qa-db-ja.com

ggplot2の余分な凡例を削除

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つの例外を除いて、結果は正常に見えます。 geom_pointレイヤーのalphaを示す追加の凡例があります。

Extra Legend for <code>geom_point</code> transparency

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

74
Wilduck

外観は、ggplot呼び出し内でsetまたはmappedにできます。

  • aes(...)内で定義される美学は、データからmappedであり、凡例が作成されます。
  • aes()の外側で定義することで、美的要素はsetで単一の値になります。

この場合、set _alpha = 0.8_およびmap _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
_

enter image description here

mapped変数の場合、適切な_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')
_

同一のプロットを返します

[〜#〜] edit [〜#〜] @Joranのコメントはスポットオンです。答えをより包括的にしました。

146
mnel

不要な部分の後に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)
23
CSV

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

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

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

0
Georgette