web-dev-qa-db-ja.com

ggplotでいくつかの凡例を消す

複数の凡例がある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 = FALSEgeom_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引数がありません。

表示される凡例を指定する方法

189
Richie Cotton

scale_..._...()guide=FALSEを使って凡例を抑制することができます。

lengthは連続変数である(離散ではない)ので、あなたの例ではscale_colour_continuous()を使うべきです。

(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 != "")
253
Didzis Elferts

対応する凡例を抑制するためにgeomにshow.legend=FALSEを追加するだけです。

8
fc9.30