# Instalación de plotly
install.packages("plotly")
# Instalación de DT
install.packages("DT")
11 ggplot2 y plotly - creación declarativa de gráficos interactivos
11.1 Resumen
R proporciona una gran cantidad de funciones para la elaboración de gráficos estadísticos y otros tipos de visualizaciones. El paquete base de R, por ejemplo, contiene un conjunto básico de funciones muy versátiles, especialmente para gráficos simples de conjuntos de datos relativamente pequeños. Sin embargo, para visualizaciones más avanzadas, puede ser conveniente explorar otras bibliotecas.
ggplot2 es una de las bibliotecas más populares de graficación de R. Implementa el concepto de “gramática de gráficos”, que permite crear visualizaciones complejas a partir de capas y componentes simples. Forma parte de Tidyverse, por lo que se comunica muy bien con los demás paquetes de esta familia, enfocada en conjuntos de datos grandes y en ciencia de datos.
plotly es una biblioteca para crear gráficos interactivos y dinámicos. Contiene capacidades para agregar controles y mecanismos que le permiten al usuario interactuar con los gráficos y realizar operaciones como filtrados, acercamientos y alejamientos, entre otras.
El paquete DT, por su parte, permite presentar conjuntos de datos en tablas interactivas en las que se pueden realizar operaciones como ordenamientos, consultas y filtrados.
11.2 Trabajo previo
11.2.1 Lecturas
Chang, W. (2018). R graphics cookbook: Practical recipes for visualizing data. O’Reilly. https://r-graphics.org/
Wickham, H., & Grolemund, G. (2017). R for Data Science: Import, Tidy, Transform, Visualize, and Model Data (capítulo 3). O’Reilly Media. https://r4ds.had.co.nz/
Wickham, H., & Grolemund, G. (s. f.). R para Ciencia de Datos (1era ed.) (capítulo 3). https://es.r4ds.hadley.nz/
Wickham, H., Çetinkaya-Rundel, M., & Grolemund, G. (s. f.). R for Data Science (2nd ed.) (capítulo 2). https://r4ds.hadley.nz/
Wickham, H., Navarro, D., & Pedersen, T. L. (s.f.). ggplot2: Elegant graphics for data analysis. https://ggplot2-book.org/
11.3 Instalación y carga
Los paquetes necesarios pueden instalarse con la función install.packages()
. Ya que se usaron en capítulos anteriores, en este punto se asumen instalados los paquetes de Tidyverse.
Una vez instalados, los paquetes pueden cargarse con la función library()
:
# Carga conjunta de Tidyverse
# (incluye ggplot2, dplyr, readr y otros)
library(tidyverse)
# Carga de plotly
library(plotly)
# Carga de DT
library(DT)
11.4 Conjuntos de datos de ejemplo
11.4.1 mpg
mpg es uno de los conjuntos de datos de ejemplo que se incluyen junto con el paquete ggplot2. Contiene observaciones para 38 modelos de automóviles, recopiladas por la Agencia de Protección Ambiental de los Estados Unidos, y un conjunto de variables relacionadas con el consumo de combustible.
En el siguiente bloque de código, se utiliza la función datatable() del paquete DT, para desplegar las observaciones de mpg en una tabla.
# Tabla de datos de mpg
|>
mpg datatable(
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
) )
DT es un “envoltorio” (wrapper) de la biblioteca DataTables de JavaScript, un lenguaje ampliamente utilizado en el desarrollo de páginas web interactivas.
11.4.2 diamonds
diamonds es otro de los conjuntos de datos de ejemplo de ggplot2. Contiene observaciones de más de 50000 diamantes, incluyendo su precio, color, claridad y otros atributos.
# Tabla de datos de diamonds
|>
diamonds datatable(
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
) )
11.4.3 gapminder
Este conjunto es un extracto de los datos disponibles en Gapminder.org, una organización son fines de lucro que promueve el desarrollo global y el cumplimiento de los Objetivos de Desarrollo del Milenio de las Naciones Unidas, a través de la estadística y la información general sobre desarrollo social, económico y ambiental a nivel local, nacional y global.
Se distribuye en el paquete gapminder, el cual contiene el data frame gapminder
, que incluye datos de esperanza de vida, producto interno bruto y población de 142 países, para cada cinco años, entre 1952 y 2007.
# Instalación de gapminder
install.packages("gapminder")
# Carga de gapminder
library(gapminder)
La siguiente tabla muestra los datos de gapminder para el año 2007.
# Tabla de datos de gapminder
|>
gapminder filter(year == 2007) |> # filtro para el año 2007
datatable(
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
) )
11.4.4 Casos de COVID-19 en Costa Rica
Estos datos fueron publicados por el Ministerio de Salud de Costa Rica en https://geovision.uned.ac.cr/oges/ (a la fecha de escritura de este documento, el enlace no está funcionando). Se distribuyen en archivos CSV, incluyendo un archivo de datos generales para todo el país y varios archivos con datos por cantón. La fecha de la última actualización es 2022-05-30.
Puede encontrar el archivo que se necesita para este capítulo en https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2023-i/main/datos/ministerio-salud/covid/05_30_22_CSV_GENERAL.csv.
El siguiente bloque de código, carga y transforma los datos generales de COVID-19 con funciones de los paquetes readr y dplyr. La función read_delim() de readr, lee datos de formatos tabulares (ej. CSV, TSV) y, entre otras ventajas, permite cargar solo las columnas especificadas en el argumento col_select
. Las funciones read_csv()
, read_csv2()
y read_tsv()
son casos especiales de read_delim()
.
# Carga del archivo CSV de entrada en un dataframe
# con la función read_delim() de readr
<-
covid_general read_delim(
file = "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2023-i/main/datos/ministerio-salud/covid/05_30_22_CSV_GENERAL.csv",
col_select = c(
"FECHA",
"positivos",
"activos",
"RECUPERADOS",
"fallecidos",
"nue_posi",
"nue_falleci",
"salon",
"UCI"
)
)
# Cambio de nombre de columnas
<-
covid_general |>
covid_general rename(
fecha = FECHA,
recuperados = RECUPERADOS,
nuevos_positivos = nue_posi,
nuevos_fallecidos = nue_falleci,
uci = UCI
)
# Cambio de tipo de datos de la columna fecha, de str a date
<-
covid_general |>
covid_general mutate(fecha = as.Date(fecha, format = "%d/%m/%Y"))
La siguiente tabla muestra los datos generales de COVID-19.
# Tabla de datos de COVID generales
|>
covid_general datatable(
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
) )
11.4.5 Delitos cometidos en 2022 en Costa Rica
Contiene estadísticas policiales de 2022, publicadas en el sitio de datos abiertos del Organismo de Investigación Judicial (OIJ).
Puede encontrar el archivo que se necesita para este capítulo en https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2023-i/main/datos/oij/estadisticas-policiales/estadisticaspoliciales2022.csv
# Carga de datos
<-
delitos_2022 read_delim(
file = "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2023-i/main/datos/oij/estadisticas-policiales/estadisticaspoliciales2022.csv"
)
# Tabla de datos
|>
delitos_2022 datatable(
options = list(
pageLength = 5,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
) )