Desidero ridenominare i valori in una legenda senza alterare i colori personalizzati che sono già stati impostati. C'è un modo per impostare le etichette delle legende senza usare scale_color_manual? Attualmente, ho qualcosa di simile:Modifica dei nomi delle legende senza cambiare i colori 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"))
Questo tuttavia sovrascrive i colori manuali. Cambierò i nomi in una funzione diversa da quella in cui sto impostando i colori, quindi, sfortunatamente, non potrò usare scale_color_manual (values = ..., labels = ...). L'altra opzione che ho pensato è di ottenere in qualche modo i colori usati in plot1. Ho potuto quindi fare qualcosa di simile:
colors <- plot1$colors_used
plot2 <- plot1 + scale_color_manual(labels = c("Distribution 1",
"Distribution 2",
"Distribution 3"),
values = colors)
Qualsiasi aiuto sarebbe molto apprezzato. Grazie!
L'OP ha escluso questo, che, IMHO, è il vero problema. Si sono dipinti in un angolo con il loro altro codice. Quindi la vera soluzione è che l'OP rafforzi il proprio codice in modo tale che questa soluzione funzioni. – joran
Grazie ragazzi, sfortunatamente, preferirei non rifattore. La rinomina delle etichette verrà eseguita in una funzione separata. Questa funzione prenderà molti grafici diversi che hanno tutti colori unici. I grafici (insieme ai colori) verranno creati in molte diverse funzioni. Mi piacerebbe essere in grado di applicare questa funzione solo per determinare i nuovi nomi e quindi rinominare. Qualche altro suggerimento? Grazie! – Taylor