Cómo cambiar una curva de densidad sin cambiar la leyenda en ggplot2?
Quiero cambiar el color de la curva de densidad, pero cuando lo cambio, también cambia el borde de las cajas de la leyenda.
Gráfico original:
Cuando cambio el color de la curva de densidad:
Además, si agrego lwd=1.2
a la curva de densidad, la leyenda también cambia.
¿Alguien sabe cómo arreglarlo?
(Quiero cambiar el grosor de la línea y el color de la curva de densidad, pero no quiero cambiar cómo se ve la leyenda).
Este es el código:
val1 <- c(2.1490626,3.7928443,2.2035281,1.5927854,3.1399245,2.3967338,3.7915825,4.6691277,3.0727319,2.9230937,2.6239759,3.7664386,4.0160378,1.2500835,4.7648343,0.0000000,5.6740227,2.7510256,3.0709322,2.7998003,4.0809085,2.5178086,5.9713330,2.7779843,3.6724801,4.2648527,3.6841084,2.5597235,3.8477471,2.6587736,2.2742209,4.5862788,6.1989269,4.1167091,3.1769325,4.2404515,5.3627032,4.1576810,4.3387921,1.4024381,0.0000000,4.3999099,3.4381837,4.8269218,2.6308474,5.3481382,4.9549753,4.5389650,1.3002293,2.8648220,2.4015338,2.0962332,2.6774765,3.0581759,2.5786137,5.0539080,3.8545796,4.3429043,4.2233248,2.0434363,4.5980727)
val2 <- c(3.7691229,3.6478055,0.5435826,1.9665861,3.0802654,1.2248374,1.7311236,2.2492826,2.2365337,1.5726119,2.0147144,2.3550348,1.9527204,3.3689502,1.7847986,3.5901329,1.6833872,3.4240479,1.8372175,0.0000000,2.5701453,3.6551315,4.0327091,3.8781182)
df1 <- data.frame(value = val1)
df2 <- data.frame(value = val2)
data <- bind_rows(lst(df1, df2), .id = 'id')
data %>%
ggplot(aes(value)) +
geom_histogram(aes(y=..density.., fill = id), bins=10, col="black", alpha=0.4) +
geom_density(lwd = 1.2,
colour = "red") +
facet_grid(id ~ .) +
scale_x_continuous(breaks=pretty(data$value, n=10)) +
ggtitle("Mi histograma....") +
guides(fill=guide_legend(title="Mi leyenda...")) +
theme(strip.text.x = element_blank(),strip.text.y = element_blank())
¡Gracias de antemano!
Saludos
davy.ai
Para cambiar el color y el ancho de línea de la curva de densidad sin afectar la leyenda, puedes modificar la función
guide_legend()
. Utiliza el argumentooverride.aes
para especificar las estéticas que deseas modificar, en este casocolor
ysize
.Aquí tienes una versión actualizada del código:
{r}
data %>%
ggplot(aes(value)) +
geom_histogram(aes(y=..density.., fill = id), bins=10, col="black", alpha=0.4) +
geom_density(lwd = 1.2, colour = "red") +
facet_grid(id ~ .) +
scale_x_continuous(breaks=pretty(data$value, n=10)) +
ggtitle("Mi histograma....") +
guides(fill=guide_legend(title="Mi leyenda...",
override.aes = list(color = c("#F8766D", "#00BFC4"),
size = c(0.5, 1.2)))) +
theme(strip.text.x = element_blank(),strip.text.y = element_blank())
En el argumento
override.aes
, especificamos los colores deseados para la curva de densidad mediante el argumentocolor
y el ancho de línea deseado mediante el argumentosize
. Especificamos los colores utilizando códigos hexadecimales.Con esta modificación, la leyenda debería permanecer sin cambios, mientras que la curva de densidad se muestra con el color y el ancho de línea deseados.