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 puedo hacer un gráfico de líneas que combine múltiples registros por día a lo largo de un período de tiempo?

No estoy seguro si mi título tiene sentido, pero estoy tratando de graficar el gasto a lo largo del tiempo. Aquí está mi dput:

structure(list(case = c(1L, 1L, 1L, 1L, 1L, 2L), year = c(2021L, 
2021L, 2021L, 2021L, 2021L, 2021L), month = c(11L, 11L, 11L, 
11L, 11L, 11L), day = c(11L, 11L, 11L, 11L, 11L, 12L), type1 = c("food", 
"food", "drink", "misc", "drink", "drink"), type2 = c("restaurant", 
"tang_kee", "coffee", "headphone", "cola", "coffee_grounds"), 
    amount = c(210, 12, 9, 50, 18, 39)), row.names = c(NA, 6L
), class = "data.frame")

Cuando simplemente hago un gráfico de línea simple con gglines, se muestra esto:

ggline(slack_budget,
       x="case",
       y="amount")+
theme_bw()+
labs(title = "Progresión del gasto en noviembre y diciembre",
     subtitle = "Gráfico de línea de gasto no relacionado con alquiler/servicios públicos",
     caption = "*Datos obtenidos de la matriz local.")+
theme(plot.title = element_text(face = "bold"),
      plot.caption = element_text(face = "italic"))

Lo cual crea esto:

enter image description here

Como se puede ver aquí, se grafica un punto para cada entrada individual de gasto en ese día. En mi opinión, esto se ve un poco feo porque no muestra realmente una imagen de cuánto se gasta día a día en total.

Lo que realmente estoy buscando es combinar todas las entradas de cada día sin combinar el gasto de cada mes (por eso tengo x = case en lugar de x = day). Si hay una forma más fácil de lograr esto, sería genial saberlo.

Solución:

Gracias a Stefan por su respuesta. Ahora he creado este hermoso gráfico después de agrupar los datos:

enter image description here

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para combinar las entradas de cada día sin combinar los gastos de cada mes, primero puedes agregar los datos sumando las cantidades para cada día utilizando el paquete dplyr. Luego puedes crear un gráfico de líneas usando ggplot2 y mostrar las etiquetas de fecha en el eje x en lugar de los números de caso. Aquí tienes un ejemplo de código:

    library(dplyr)
    library(ggplot2)
    
    # Agrega los datos sumando las cantidades para cada día
    slack_budget_diario <- slack_budget %>%
      group_by(year, month, day) %>%
      summarize(total_amount = sum(amount)) %>%
      ungroup()
    
    # Crea un gráfico de líneas con etiquetas de fecha
    ggplot(slack_budget_diario, aes(x = as.Date(paste(year, month, day, sep = "-")), y = total_amount)) +
      geom_line() +
      labs(title = "Progresión de los Gastos en Noviembre y Diciembre",
           subtitle = "Gráfico de Líneas de Gastos no relacionados con alquileres o servicios públicos",
           caption = "*Datos obtenidos de la matriz local.") +
      theme_bw() +
      scale_x_date(date_labels = "%b %d")
    

    Esto debería darte un gráfico de líneas que muestra el gasto total para cada día en lugar de cada entrada individual de gasto en ese día.

Comments are closed.