web-dev-qa-db-ja.com

凡例を削除するggplot 2.2

一方のレイヤーの凡例(滑らか)を維持し、もう一方のレイヤーの凡例(ポイント)を削除しようとしています。 guides(colour = FALSE)geom_point(aes(color = vs), show.legend = FALSE)で凡例を消してみました。

編集 :この質問とその答えはよく知られているので、再現可能な例が順番に並んでいます。

library(ggplot2)
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) + 
theme_bw() 

enter image description here

189
Guy

r cookbook から、bpはあなたのggplotです。

特定の美学のための凡例を削除する(塗りつぶし):

bp + guides(fill=FALSE)

スケールを指定するときにそれをすることもできます:

bp + scale_fill_discrete(guide=FALSE)

これですべての凡例が削除されます。

bp + theme(legend.position="none")
374
user3490026

これに対する別の解決策があるかもしれません:
あなたのコードは次のとおりです。

geom_point(aes(..., show.legend = FALSE))

show.legendパラメータafteraes呼び出しを指定できます。

geom_point(aes(...), show.legend = FALSE)

対応する凡例は消えます

62
Tjebo

質問と user3490026 の回答が一番のヒット商品なので、私はこれまでに再現性のある例とこれまでに行われた提案の簡単な説明をOPの質問に明示的に取り組む解決策と共に作成しました。

ggplot2が行うこと、そして混乱を招く可能性があることの1つは、それらが同じ変数に関連付けられているときに自動的に特定の凡例をブレンドすることです。たとえば、factor(gear)は、linetypeに1回、fillに1回、合計2回出現します。それとは対照的に、gearfactor(gear)と同じものとして扱われないので、それ自身の凡例エントリを持ちます。これまでに提供された解決策は、通常うまくいきます。しかし時折、ガイドを上書きする必要があるかもしれません。一番下の最後の例を見てください。

# reproducible example:
library(ggplot2)
p <- ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) + 
theme_bw() 

enter image description here

すべての凡例を削除する:@ user3490026

p + theme(legend.position = "none")

すべての凡例を削除します。@duhaime

p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)

説明文をオフにする:@Tjebo

ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs), show.legend = FALSE) +
geom_point(aes(shape = factor(cyl)), show.legend = FALSE) +
geom_line(aes(linetype = factor(gear)), show.legend = FALSE) +
geom_smooth(aes(fill = factor(gear), color = gear), show.legend = FALSE) + 
theme_bw() 

線種が表示されるようにfillを削除します

p + guides(fill = FALSE)

scale_fill_関数による上記と同じ:

p + scale_fill_discrete(guide = FALSE)

そして今OPの要求への1つの可能な答え

「一方のレイヤーの凡例を滑らかにし、もう一方のレイヤーの凡例(ポイント)を削除する」

アドホックポストホックオフをオンにする

p + guides(fill = guide_legend(override.aes = list(color = NA)), 
           color = FALSE, 
           shape = FALSE)  

enter image description here

19
PatrickT

チャートでfillcolorの両方の美観を使用している場合は、次のようにして凡例を削除できます。

+ guides(fill=FALSE, color=FALSE)
12
duhaime