1. ホーム
  2. r

[解決済み】ggplotのいくつかの凡例をオフにする

2022-05-02 19:22:29

質問

複数の凡例がある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

この質問 は、legendsを制御する最新の方法(ggplot2 v0.9.2以降)が、以下のものであることを示唆しています。 guides という関数があります。

というようなことができるようにしたいです。

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

しかし guide_legend はshow引数を持っていません。

表示するレジェンドを指定するには?

解決方法を教えてください。

を使用することができます。 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" を、凡例として表示させたくない要素/美観のために使用する、などです。 fill , shape , colour .

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 != "")