Ändern würde Ich mag die Werte in einer Legende benennen, ohne die benutzerdefinierten Farben zu verändern, die bereits festgelegt worden sind. Gibt es eine Möglichkeit, Legendenbeschriftungen ohne scale_color_manual zu erstellen? Derzeit habe ich etwas in der Art:ändern Legende Namen ohne Farben in ggplot2
norm <- rnorm(1000, 0 , .5)
gam <- rgamma(1000, 2)
beta <- rbeta(1000, 2, 3)
dist <- data.frame(Normal = norm, Gamma = gam, Beta= beta)
dat <- melt(dist, variable.name = "Distribution", value.name = "XValue")
plot1 <- ggplot(dat, aes(XValue, color = Distribution)) +
stat_density(geom = "path", position = "identity", size = 2) +
scale_color_manual(values = c("yellow", "black", "forestgreen"))
plot2 <- plot1 + scale_color_discrete(labels = c("Distribution 1",
"Distribution 2",
"Distribution 3"))
Dies jedoch überschreibt die manuellen Farben. Ich werde die Namen in einer anderen Funktion seinen Wechsel von wo ich Farben, so setze ich leider werde scale_color_manual nicht nutzen kann (Wert = ..., labels = ...). Die andere Option, an die ich gedacht habe, ist, irgendwie die Farben von plot1 zu bekommen. Ich könnte dann etwas tun wie:
colors <- plot1$colors_used
plot2 <- plot1 + scale_color_manual(labels = c("Distribution 1",
"Distribution 2",
"Distribution 3"),
values = colors)
Jede Hilfe wäre sehr geschätzt. Vielen Dank!
Die OP entschied dies aus, die, meiner Meinung nach, ist das eigentliche Problem. Sie haben sich mit ihrem anderen Code in eine Ecke gemalt. Die wirkliche Lösung besteht also darin, dass der OP seinen Code so umgestaltet, dass diese Lösung funktioniert. – joran
Danke Jungs, leider würde ich lieber nicht umgestalten. Das Umbenennen der Labels erfolgt in einer separaten Funktion. Diese Funktion nimmt viele verschiedene Diagramme auf, die alle eindeutige Farben haben. Die Plots (zusammen mit den Farben) werden in vielen verschiedenen Funktionen erstellt. Ich möchte in der Lage sein, nur diese Funktion anzuwenden, um die neuen Namen zu bestimmen und dann umzubenennen. Irgendwelche anderen Vorschläge? Vielen Dank! – Taylor