Ejemplo caudal río Chinchiná

Depuración de datos

library(tidyverse)
library(janitor)
library(lubridate)

caudales1 <- read_csv("Caudal_Rio_Chinchina_2016.csv")

# Depuración
caudales2 <- caudales1 %>% 
  clean_names() %>% 
  slice(1:31) %>% 
  mutate(year = 2016, dia = as.numeric(dia)) %>% 
  pivot_longer(cols = -c(dia, year), names_to = "mes", values_to = "caudal") %>% 
  mutate(mes = str_c(mes, ".")) %>% 
  unite(year, mes, dia, sep = "-", remove = TRUE, col = "fecha") %>% 
  mutate(fecha = ymd(fecha),
         mes = month(fecha, label = TRUE, abbr = FALSE),
         mes = str_to_sentence(mes),
         mes = fct_relevel(mes, "Enero", "Febrero", "Marzo", "Abril",
                           "Mayo", "Junio", "Julio", "Agosto", "Septiembre",
                           "Octubre", "Noviembre", "Diciembre"),
         dia_mes = day(fecha),
         semana = week(fecha),
         dia_semana = weekdays(fecha),
         dia_semana = str_to_sentence(dia_semana),
         dia_semana = fct_relevel(dia_semana, "Lunes", "Martes", "Miércoles",
                                  "Jueves", "Viernes", "Sábado", "Domingo"))

caudales2

Serie temporal del caudal

theme_set(theme_minimal())
caudales2 %>% 
  ggplot(mapping = aes(x = fecha, y = caudal)) +
  geom_line() +
  geom_smooth() +
  scale_x_date(breaks = "2 month")

ggridges (densidades)

library(ggridges)
caudales2 %>% 
  filter(!is.na(mes)) %>% 
  ggplot(mapping = aes(x = caudal, y = mes)) +
  geom_density_ridges()

  • Gráfico anterior con gradiente:
caudales2 %>% 
  filter(!is.na(mes)) %>% 
  ggplot(mapping = aes(x = caudal, y = mes, fill = after_stat(x))) + 
  geom_density_ridges_gradient() +
  scale_fill_viridis_c()

dygraphs

library(dygraphs)

# Convertir en tipo xts
library(xts)

# Eliminando fechas con NAs
datos_serie <- caudales2 %>% 
  filter(!is.na(fecha))

serie_caudal <- xts(x = datos_serie$caudal, order.by = datos_serie$fecha)

dygraph(serie_caudal) %>% dyRangeSelector()

Gráfico animado (gganimate)

library(gganimate)
caudales2 %>% 
  filter(!is.na(fecha)) %>% 
  ggplot(mapping = aes(x = fecha, y = caudal)) +
  geom_line() +
  transition_reveal(fecha)

Gráfico animado 2

caudales2 %>% 
  filter(!is.na(mes)) %>% 
  ggplot(mapping = aes(x = mes, y = caudal)) +
  geom_boxplot() +
  transition_manual(mes)

Gráfico calendario

caudales2 %>% 
  filter(!is.na(mes)) %>% 
  ggplot(mapping = aes(x = mes, y = dia_mes, fill = caudal)) +
  geom_tile(color = "black") +
  scale_fill_viridis_c()

Otros gráficos

Correlograma (corrplot)

library(corrplot)
iris %>% 
  select(where(is.numeric)) %>% 
  cor(method = "pearson") %>% 
  corrplot(
    method = "pie",
    tl.srt = 25,
    tl.col = "black",
    type = "lower",
    diag = FALSE
  )

Coordenadas paralelas

library(GGally)
ggparcoord(
  iris,
  columns = 1:4,
  groupColumn = 5,
  scale = "globalminmax",
  showPoints = TRUE,
  title = "Sin escalar",
  alphaLines = 0.3
)

DataExplorer

library(DataExplorer)
plot_histogram(iris)

esquisse

library(esquisse)

# esquisser(viewer = "browser")

Accidentes de tránsito Florencia Caquetá

library(tidyverse)
library(janitor)

accidentes <- read_csv("Accidentes_de_transporte__tasas_de_lesiones_por_100.000_habitantes__seg_n_edad_y_sexo__Colombia__2011.csv")
accidentes

Depuración

  • Limpiar los nombres
  • Eliminar las dos últimas columnas (“Total/Casos” y “Total/Tasa”)
  • Eliminar la última fila que corresponde al “Total”
  • Realizar conversión de formato ancho a formato largo
  • Fraccionar la columna que contiene información de género, casos y tasa
  • Con la función pivot_wider() pasar a formato ancho dos columnas (total y tasa)
accidentes2 <- accidentes %>% 
  clean_names() %>% 
  select(-c(total_casos, total_tasa)) %>% 
  slice(-nrow(accidentes)) %>% 
  pivot_longer(cols = -edad_anos, names_to = "tipo", values_to = "valores") %>% 
  separate(col = "tipo", into = c("genero", "tipo2"), sep = "_", remove = TRUE) %>% 
  pivot_wider(names_from = "tipo2", values_from = "valores")

accidentes2

Gráfico proporciones

accidentes2 %>% 
  group_by(edad_anos) %>% 
  mutate(total_casos = sum(casos),
         proporcion = casos / total_casos) %>% 
  ggplot(mapping = aes(x = edad_anos, y = proporcion,
                       fill = genero, color = genero)) +
  geom_col(alpha = 0.7) +
  coord_flip()