109

を使用して線と点のプロットを組み合わせて実行しようとしている単純なデータフレームがあります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>の透明性に関する追加の凡例

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

4

3 に答える 3

203

美学は 、コール内で設定またはマッピングできます。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')

同一のプロットを返す

EDIT @Joranのコメントは的確です。回答をより包括的にしました

于 2012-07-30T03:12:35.733 に答える
1

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

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

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

于 2013-01-23T15:08:02.923 に答える