Kann ggplot2 Punktgröße und Liniengröße (Linienstärke) in einer Legende separat steuern?
Ein Beispiel mitggplot2
um Gruppen von Datenpunkten und Linien, die die Mittelwerte für jede Gruppe verbinden, grafisch darzustellen, die mit denselben verknüpft sindaes
zumshape
und fürlinetype
:
p <- ggplot(mtcars, aes(gear, mpg, shape = factor(cyl), linetype = factor(cyl))) +
geom_point(size = 2) +
stat_summary(fun.y = mean, geom = "line", size = 1) +
scale_shape_manual(values = c(1, 4, 19))
Problem Ist das Punktsymbol in der Legende etwas zu klein, um es im Verhältnis zu den Liniensymbolen zu sehen?
VersuchenVergrößern Sie die Punktgröße in der Legende vergrößert auch die Strichstärke, so dass dies hier nicht sinnvoll ist.
p1 <- p + guides(shape = guide_legend(override.aes = list(size = 4)))
Es wäre schön, wenn das Strichgewicht eine eindeutige Ästhetik hättesize
. Ich habe versucht hinzuzufügen
+ guides(linetype = guide_legend(override.aes = list(size = 1)))
das gibt nur eine Warnung.
> Warning message:
In guide_merge.legend(init, x[[i]]) : Duplicated override.aes is ignored.
Es scheint auch keinen Unterschied zu machen, ob ich das bewegelinetype
aes
ausggplot()
und hineinstat_summary()
. Wenn ich nur die Punktsymbole wollte, könnte ich Linien aus der Legende entfernendiesen Weg.
p2 <- p + guides(shape = guide_legend(override.aes = list(size = 4, linetype = 0)))
Stattdessen möchte ich (kleine Punktsymbole im Diagramm selbst behalten)eine einzelne Legende mitbeide große Punktsymbole wie in diesem letzten Bildund dünne Liniensymbole wie im ersten Bild. Gibt es eine Möglichkeit, dies zu tun?