es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:
Imagen 3

Cuando cambio el color de la curva de densidad:
Imagen 2

Además, si agrego lwd=1.2 a la curva de densidad, la leyenda también cambia.
Imagen 1

¿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

Tags:  , , ,

Answer

  1. Avatar for 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 argumento override.aes para especificar las estéticas que deseas modificar, en este caso color y size.

    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 argumento color y el ancho de línea deseado mediante el argumento size. 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.

Comments are closed.