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 agregar valores de mediana en la parte superior de un gráfico de densidad agrupado?

Me disculpo si esto ya ha sido preguntado antes. Estoy tratando de agregar valores medianos a la cima de un gráfico de densidad agrupado (ejemplo a continuación).

library(dplyr)
library(forcats)

Catalan_elections %>%
  mutate(YearFct = fct_rev(as.factor(Year))) %>%
  ggplot(aes(y = YearFct)) +
  geom_density_ridges(
    aes(x = Percent, fill = paste(YearFct, Option)), 
    alpha = .8, color = 'white', from = 0, to = 100
  ) +
  labs(
    x = 'Voto (%)',
    y = 'Año de Elección',
    title = 'Voto Independentista vs Unionista en las elecciones catalanas',
    subtitle = 'Unidad de análisis: municipios (n = 949)',
    caption = 'Marc Belzunces (@marcbeldata) | Fuente: Idescat'
  ) +
  scale_y_discrete(expand = c(0, 0)) +
  scale_x_continuous(expand = c(0, 0)) +
  scale_fill_cyclical(
    breaks = c('1980 Indy', '1980 Unionist'),
    labels = c('1980 Indy' = 'Independentista', '1980 Unionist' = 'Unionista'),
    values = c('#ff0000', '#0000ff', '#ff8080', '#8080ff'),
    name = 'Opción', guide = 'leyenda'
  ) +
  coord_cartesian(clip = 'off') +
  theme_ridges(grid = FALSE)

Ingrese aquí una descripción de la imagen

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar valores de mediana al pico de un gráfico de densidad “agrupado”, podemos utilizar la función stat_summary() en ggplot2. Esta función nos permite calcular y graficar una estadística resumida para cada grupo en un conjunto de datos. En este caso, queremos calcular la mediana de la variable Percent para cada combinación de YearFct y Option en el conjunto de datos Catalan_elections.

    Para agregar valores de mediana al gráfico, podemos agregar el siguiente código después de la línea geom_density_ridges():

    “`{r}
    stat_summary(
    aes(x = Percent, y = YearFct, fill = Option),
    fun = median,
    geom = “label”,
    label = round(median(Catalan_elections$Percent), 2),
    vjust = -1.5
    )


    Aquí, estamos usando `stat_summary()` para calcular la mediana de `Percent` para cada combinación de `YearFct` y `Option`, y estamos agregando una etiqueta al gráfico usando `geom = "label"`. El argumento `label` especifica el texto que se mostrará en la etiqueta, que es la mediana general de `Percent` en el conjunto de datos. El argumento `vjust` ajusta la alineación vertical de la etiqueta. El código actualizado se vería así: ```{r} library(dplyr) library(forcats) library(ggplot2) library(ggridges) Catalan_elections %>% mutate(YearFct = fct_rev(as.factor(Year))) %>% ggplot(aes(y = YearFct)) + geom_density_ridges( aes(x = Percent, fill = paste(YearFct, Option)), alpha = .8, color = "white", from = 0, to = 100 ) + stat_summary( aes(x = Percent, y = YearFct, fill = Option), fun = median, geom = "label", label = round(median(Catalan_elections$Percent), 2), vjust = -1.5 ) + labs( x = "Votos (%)", y = "Año Electoral", title = "Voto Independentista vs Unionista en elecciones catalanas", subtitle = "Unidad de análisis: municipios (n = 949)", caption = "Marc Belzunces (@marcbeldata) | Fuente: Idescat" ) + scale_y_discrete(expand = c(0, 0)) + scale_x_continuous(expand = c(0, 0)) + scale_fill_cyclical( breaks = c("1980 Independentista", "1980 Unionista"), labels = c(`1980 Independentista` = "Independentista", `1980 Unionista` = "Unionista"), values = c("#ff0000", "#0000ff", "#ff8080", "#8080ff"), name = "Opción", guide = "legend" ) + coord_cartesian(clip = "off") + theme_ridges(grid = FALSE)

    Esto agregará valores de mediana al pico del gráfico de densidad “agrupado”, como se muestra en la siguiente imagen:

    ![Gráfico de densidad con valores de mediana][2]

Comments are closed.