J'essaie de conserver la légende d'une couche (lisse) et de supprimer la légende de l'autre (point). J'ai essayé d'éteindre les légendes avec guides(colour = FALSE)
et geom_point(aes(color = vs), show.legend = FALSE)
.
Edit : Cette question et ses réponses étant populaires, un exemple reproductible semble en ordre:
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()
de r cookbook , où bp est votre ggplot:
Supprimer la légende pour une esthétique particulière (remplissage):
bp + guides(fill=FALSE)
Cela peut également être fait lors de la spécification de l'échelle:
bp + scale_fill_discrete(guide=FALSE)
Cela supprime toutes les légendes:
bp + theme(legend.position="none")
Il pourrait y avoir une autre solution à cela:
Votre code était:
geom_point(aes(..., show.legend = FALSE))
Vous pouvez spécifier le paramètre show.legend
après l'appel aes
:
geom_point(aes(...), show.legend = FALSE)
alors la légende correspondante devrait disparaître
Comme la question et la réponse de user3490026 constituent un succès de recherche important, j’en ai donné un exemple reproductible et une brève illustration des suggestions qui ont été faites jusqu’à présent. avec une solution qui répond explicitement à la question du PO.
Une des choses que ggplot2
fait et qui peut être déroutante est qu’elle mélange automatiquement certaines légendes quand elles sont associées à la même variable. Par exemple, factor(gear)
apparaît deux fois, une fois pour linetype
et une fois pour fill
, ce qui donne une légende combinée. En revanche, gear
possède sa propre entrée de légende, car elle n'est pas traitée de la même manière que factor(gear)
. Les solutions proposées jusqu'à présent fonctionnent généralement bien. Mais parfois, vous devrez peut-être remplacer les guides. Voir mon dernier exemple en bas.
# 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()
Supprime toutes les légendes: @ user3490026
p + theme(legend.position = "none")
Supprimez toutes les légendes: @duhaime
p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)
Désactiver les légendes: @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()
Supprimer le remplissage afin que le type de ligne devienne visible
p + guides(fill = FALSE)
Comme ci-dessus via la fonction scale_fill_:
p + scale_fill_discrete(guide = FALSE)
Et maintenant, une réponse possible à la demande du PO
"conserver la légende d'un calque (lisse) et supprimer la légende de l'autre (point)"
Activez certains post-hoc ad hoc
p + guides(fill = guide_legend(override.aes = list(color = NA)),
color = FALSE,
shape = FALSE)
Si votre graphique utilise à la fois l'esthétique fill
et color
, vous pouvez supprimer la légende avec:
+ guides(fill=FALSE, color=FALSE)