Ich muss ein Diagramm erstellen, in dem ein Histogramm von einer Dichte überlagert wird. Hier ist mein Ergebnis so weit einige Beispiel Daten:ggplot2: Legendensymbole im überlagerten Plot anpassen
library("ggplot2")
set.seed(1234)
a <- round(rnorm(10000, 5, 5), 0)
b <- rnorm(10000, 5, 7)
df <- data.frame(a, b)
ggplot(df) +
geom_histogram(aes(x = a, y = ..density.., col = "histogram", linetype = "histogram"), fill = "blue") +
stat_density(aes(x = b, y = ..density.., col = "density", linetype = "density"), geom = "line") +
scale_color_manual(values = c("red", "white"),
breaks = c("density", "histogram")) +
scale_linetype_manual(values = c("solid", "solid")) +
theme(legend.title = element_blank(),
legend.position = c(.75, .75),
legend.text = element_text(size = 15))
Leider kann ich nicht herausfinden, wie ich die Symbole in der Legende richtig ändern kann. Das erste Symbol sollte eine relativ dicke rote Linie sein und das zweite Symbol sollte ein blaues Feld ohne die weiße Linie in der Mitte sein.
Basierend auf einigen Internet-Recherche habe ich versucht, habe ich versucht, verschiedene Dinge in scale_linetype_manual
und weiter zu verändern override.aes
zu verwenden, aber ich konnte nicht herausfinden, wie ich es in diesem speziellen Fall verwenden müssten.
EDIT - Hier ist die beste Lösung, die unten auf die sehr hilfreichen Antworten.
ggplot(df) +
geom_histogram(aes(x = a, y = ..density.., linetype = "histogram"),
fill = "blue",
# I added the following 2 lines to keep the white colour arround the histogram.
col = "white") +
scale_linetype_manual(values = c("solid", "solid")) +
stat_density(aes(x = b, y = ..density.., linetype = "density"),
geom = "line", color = "red") +
theme(legend.title = element_blank(),
legend.position = c(.75, .75),
legend.text = element_text(size = 15),
legend.key = element_blank()) +
guides(linetype = guide_legend(override.aes = list(linetype = c(1, 0),
fill = c("white", "blue"),
size = c(1.5, 1.5))))
Vielen Dank, das war die perfekte Lösung! Ich habe Ihrem Code zwei Zeilen hinzugefügt, weil ich die weiße Farbe um das Histogramm herum behalten möchte (siehe oben bearbeiteter Beitrag). – JSP