J'ai créé un tracé avec une légende personnalisée dans ggplot2
. J'ai essayé de dessiner une boîte autour de tous les éléments de la légende, mais je ne pouvais dessiner qu'une boîte autour de chaque élément individuel. Comment puis-je créer une seule boîte autour de tous les articles?
library(ggplot2)
ggplot(mpg, aes(displ, cty)) +
geom_point(aes(shape = "Data")) +
stat_smooth(aes(linetype = "Regression"), method = "lm",
formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
scale_shape_manual(values = 1) +
labs(shape = "", linetype = "") +
theme_classic() +
theme(panel.border = element_rect(colour = "black", fill=NA),
aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
legend.background = element_rect(linetype = 2, size = 0.5, colour = 1))
Il semble que le rectangle legend.background
Chevauche le rectangle legend.box.background
. Une solution simple consiste à définir legend.background = element_blank()
.
Mais alors, à mon avis, l'espacement dans la légende est moche. Les titres de légende prennent trop de place même sans jeu de titres. Corrigez cela en définissant legend.title = element_blank()
. De plus, l'espacement entre les deux légendes est trop important. Corrigez cela en définissant l'espace à zéro legend.spacing.y = unit(0, "mm")
library(ggplot2)
ggplot(mpg, aes(displ, cty)) +
geom_point(aes(shape = "Data")) +
stat_smooth(aes(linetype = "Regression"), method = "lm",
formula = y ~ x, se = FALSE, colour = 1, size = 0.5) +
scale_shape_manual(values = 1) +
labs(shape = "", linetype = "") +
theme_classic() +
theme(legend.title = element_blank(),
legend.spacing.y = unit(0, "mm"),
panel.border = element_rect(colour = "black", fill=NA),
aspect.ratio = 1, axis.text = element_text(colour = 1, size = 12),
legend.background = element_blank(),
legend.box.background = element_rect(colour = "black"))