一方のレイヤーの凡例(滑らか)を維持し、もう一方のレイヤーの凡例(ポイント)を削除しようとしています。 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()
r cookbook から、bpはあなたのggplotです。
特定の美学のための凡例を削除する(塗りつぶし):
bp + guides(fill=FALSE)
スケールを指定するときにそれをすることもできます:
bp + scale_fill_discrete(guide=FALSE)
これですべての凡例が削除されます。
bp + theme(legend.position="none")
これに対する別の解決策があるかもしれません:
あなたのコードは次のとおりです。
geom_point(aes(..., show.legend = FALSE))
show.legend
パラメータafteraes
呼び出しを指定できます。
geom_point(aes(...), show.legend = FALSE)
対応する凡例は消えます
質問と user3490026 の回答が一番のヒット商品なので、私はこれまでに再現性のある例とこれまでに行われた提案の簡単な説明をOPの質問に明示的に取り組む解決策と共に作成しました。
ggplot2
が行うこと、そして混乱を招く可能性があることの1つは、それらが同じ変数に関連付けられているときに自動的に特定の凡例をブレンドすることです。たとえば、factor(gear)
は、linetype
に1回、fill
に1回、合計2回出現します。それとは対照的に、gear
はfactor(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()
すべての凡例を削除する:@ 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)
チャートでfill
とcolor
の両方の美観を使用している場合は、次のようにして凡例を削除できます。
+ guides(fill=FALSE, color=FALSE)