266

複数の凡例を持つ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引数はありません。

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

4

2 に答える 2

356

でを使用guide = "none"scale_..._...()て、凡例を抑制することができます。

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

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

または、関数を使用して、凡例として表示したくない要素/美学をguides()設定する必要があります(例: 、、、)。"none"fillshapecolour

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

アップデート

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

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
于 2013-01-30T12:55:00.840 に答える
51

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

于 2018-09-04T07:23:59.423 に答える