Ho esaminato domande simili precedenti e (penso) ho fatto tutto ciò che è stato raccomandato in esse. Non sto ancora ottenendo l'output che voglio.Aggiunta di legenda manuale in ggplot
Ho un sacco di distribuzioni, che sto visualizzando in grafici sfaccettati. Poi disegno linee verticali attraverso di loro, che rappresentano diversi interventi.
Sto tentando di visualizzare una legenda che contiene sia il colore di riempimento delle distribuzioni che il colore della linea di quelle linee aggiuntive. Per quanto posso dire, sto facendo tutto bene (impostando il comando colore entro aes()
, usando scale_colour_manual()
per definire la legenda, ecc.). Sto ancora ricevendo solo la legenda per i colori di riempimento.
Ecco il mio codice:
ggplot(modCosts, aes(x=cost)) + geom_density(aes(fill=group)) + theme_bw() +
facet_wrap(~ country, scales="free") + scale_x_continuous(label = dollar) +
scale_fill_brewer(palette = "RdGy", name = "Income group", labels = c("HIC" = "High income", "UMIC" = "Upper-middle income", "LIC" = "Low income")) +
labs(y = "Density", x = "Cost", title = "Medical costs of surgery\nActual vs. modeled") +
geom_vline(data = surgCosts, aes(xintercept = CS.tert.lo, color = "red4")) +
geom_vline(data = surgCosts, aes(xintercept = CS.tert.hi, color = "red4")) +
geom_vline(data = surgCosts, aes(xintercept = CS.prim.lo, color = "red4"), lty = "dashed") +
geom_vline(data = surgCosts, aes(xintercept = CS.prim.hi, color = "red4"), lty = "dashed") +
geom_vline(data = surgCosts, aes(xintercept = Lap.tert.lo, color = "deepskyblue")) +
geom_vline(data = surgCosts, aes(xintercept = Lap.tert.hi, color = "deepskyblue")) +
geom_vline(data = surgCosts, aes(xintercept = Lap.prim.lo, color = "deepskyblue"), lty = "dashed") +
geom_vline(data = surgCosts, aes(xintercept = Lap.prim.hi, color = "deepskyblue"), lty = "dashed") +
geom_vline(data = surgCosts, aes(xintercept = Fx.tert.lo, color = "yellowgreen")) +
geom_vline(data = surgCosts, aes(xintercept = Fx.tert.hi, color = "yellowgreen")) +
scale_color_manual(name = "Reported cost", values = c("red4" = "red4", "deepskyblue" = "deepskyblue", "yellowgreen" = "yellowgreen"),
labels = c("Int1", "Int2", "Int3")) +
theme(axis.ticks = element_blank(), axis.text.y = element_blank(), legend.position = "right")
Ed ecco l'output sto ottenendo:
Qualsiasi aiuto sarebbe molto apprezzato!
Questo sarebbe molto più semplice se si fornissero i propri set di dati, preferibilmente usando, ad esempio, 'dput (modCosts)' e 'dput (surgCosts)'. – jlhoward
C'è un argomento 'show_guide = ...' a 'geom_vline (...)' che di default è 'FALSE'. – jlhoward
Suggerirei di comprimere tutti questi livelli in una sola geom_vline utilizzando un singolo frame di dati e mappando l'estetica del colore. – joran