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.

Gráfica de barras con datos de panel

Estoy luchando mucho para hacer un gráfico de barras que me muestre cuántas observaciones hay en cada categoría de “voted”.

La cosa es que tengo una variable “voted” en mi panel de datos, numérica, que me dice a qué partido se votó en 2012 y 2014.

Aquí tienes un ejemplo reproducible:

“`{r}
id <- c('1','1','1','2','2','2','3','3','3')
wave <- c(2012, 2013, 2014, 2012, 2013, 2014, 2012, 2013, 2014)
voted <- c(1, NA, 4, 1, NA, 2, 2, NA, 4)
mydata <- data.frame(id, wave, voted)

<pre><code><br />Solo ha habido elecciones en 2012 y 2014, por eso están los NA's. Cada número representa el nombre de un partido.

Quiero mostrar en un gráfico de barras cuántos encuestados votaron por el partido 1, 2, 4…

He intentado lo siguiente:

“`{r}
ggplot(mydata, aes(x = as.factor(voted), y = wave, fill = wave)) +
geom_bar(stat = “identity”, position = “dodge”)

Sin embargo, como podrás ver, se ve muy extraño.

Estoy más interesado en algo como esto:

How it should look

¿Alguien tiene alguna sugerencia? ¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear un gráfico de barras que muestre el número de encuestados que votaron por cada partido, puedes hacer lo siguiente:

    “`{r}
    library(dplyr) # para la manipulación de datos
    library(ggplot2) # para realizar gráficos

    mydata %>% # pasa mydata a través de las siguientes operaciones
    group_by(voted) %>% # agrupa por la variable voted
    summarise(count = n()) %>% # cuenta el número de observaciones en cada grupo
    ggplot(aes(x = as.factor(voted), y = count)) + # utiliza la variable count para el eje y
    geom_col(fill = “skyblue”) + # utiliza geom_col en lugar de geom_bar, llena las barras con skyblue
    scale_x_discrete(drop = FALSE) + # muestra todos los niveles del factor en el eje x
    labs(x = “Partido”, y = “Número de encuestados”) # añade etiquetas a los ejes
    “`

    Este código primero agrupa los datos por la variable “voted” y cuenta el número de observaciones en cada grupo utilizando “summarise()”. Luego se utiliza “ggplot()” para hacer un gráfico de barras, con “as.factor(voted)” como variable del eje x y “count” como variable del eje y. Se utiliza “geom_col()” en lugar de “geom_bar()” para evitar la necesidad de “stat = “identity”” y para que el ancho predeterminado de las barras sea igual a 1. Las barras se llenan con skyblue utilizando “fill = “skyblue””. Finalmente, se utiliza “scale_x_discrete(drop = FALSE)” para mostrar todos los niveles del factor en el eje x, y “labs()” añade etiquetas a los ejes.

    Esto debería darte un gráfico de barras similar a la segunda imagen proporcionada.

Comments are closed.