ggplotでいくつかの凡例をオフにする


221

複数の凡例を含むggplotがあるとします。

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

次のように、すべての凡例の表示をオフにできます。

(p1 <- p0 + theme(legend.position = "none"))

この質問に従って)を渡すshow_guide = FALSEと、形状の凡例がオフになります。geom_point

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

しかし、代わりに色の凡例をオフにしたい場合はどうなりますか?show_guideどの凡例にその動作を適用するかを伝える方法がないようです。そしてshow_guide、スケールや美学についての議論はありません。

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

この質問は、凡例を制御する現代の(ggplot2 v0.9.2以降の)方法がguides関数にあることを示唆しています。

次のようなことができるようになりたい

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

しかしguide_legend、show引数はありません。

表示する凡例を指定するにはどうすればよいですか?


6
最近のggplot2更新後、show_guideは廃止され、に置き換えられましたshow.legend
PatrickT 2016

回答:


294

guide=FALSEin scale_..._...()を使用して凡例を抑制できます。

あなたたとえば、あなたが使用する必要がありますscale_colour_continuous()ので、length連続変数(離散ないが)です。

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

または使用する機能はguides()、あなたが設定する必要がありFALSE、あなたが伝説として表示したくないという美的/その要素のために、例えば、fillshapecolour

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

更新

提供されている両方のソリューションは新しいggplot2バージョン2.0.0で機能しますが、moviesデータセットはこのライブラリに存在しません。代わりに、ggplot2moviesこれらのソリューションをチェックするために新しいパッケージを使用する必要があります。

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")

6
scale_colour_continuous(guide = FALSE)はggplot2 0.9.3では機能しませんが、guides(colour = FALSE)は問題を解決します。ディジスさん、ありがとうございました!
Nikolay Nenov 2013年

1
@NikolayNenov奇妙なのは、両方のソリューションがggplot2 0.9.3.1で私のために機能するためです
Didzis Elferts 2013年

9
アルファの伝説を削除したい。guides(alpha=FALSE)トリックを行います。ありがとう、ディジス。
l0o0

3
自己geom_linerange()紹介:があり、凡例に線ではなく十字が表示されている場合は、のshow.legend=FALSE中に挿入しgeom_linerange()ます。
PatrickT 2017

25

show.legend=FALSEgeomに追加するだけで、対応する凡例を抑制できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.