_________________________________________________________________________________________________________________________
Al crear un gráfico con el paquete {ggplot2},
encontramos tres componentes esenciales que forman la base de cualquier
gráfico:
data: Es el conjunto de datos que
contiene las variables de interés.
aes (estética): Son los atributos
visuales del gráfico, como la posición en los ejes x e y, el color, la
forma y el tamaño de los elementos. Los atributos estéticos se
asignan a las variables del conjunto de datos, permitiendo que
estas se muestren visualmente en el gráfico.
geom (objeto geométrico): Es el
tipo de objeto que se muestra en el gráfico. Se refiere al tipo de
representación gráfica que vamos a utilizar, como puntos, líneas,
barras, cajas, entre otros.
Todo gráfico empieza con la función ggplot() que
requiere como mínimo los siguientes componentes:
data, donde están las variables a graficar.aes(), donde se asignan las variables a los
atributos visuales como posición, color, tamaño, etc.Después de especificar estos componentes esenciales, podemos agregar
capas a la visualización usando el operador
+.
Facetas (facet): Permiten dividir
un gráfico en múltiples subgráficos basados en una o más variables,
proporcionando una visualización más clara de la distribución de los
datos.
Temas (themes): Permiten
personalizar el estilo y diseño del gráfico, como el color del fondo, la
fuente de los títulos, los tamaños de las etiquetas, etc.
Además, podemos añadir otras capas:
ggtitle().labs().
El paquete ofrece una amplia variedad de gráficos que permiten representar adecuadamente las variables en estudio. Nos centraremos en siete tipos de gráficos fundamentales que permiten visualizar y explorar datos tanto categóricos como numéricos. Estos son:
Diagramas de dispersión
Gráfico de líneas
Histogramas
Polígono de frecuencias
Gráfico de cajas
Gráfico de barras
Gráfico de barras apiladas
A continuación desarrollaremos cada uno de ellos, siguiendo el flujo de trabajo:
Los gráficos de dispersión o scatter plots se utilizan para mostrar la relación entre dos variables cuantitativas continuas, donde cada observación está representada por un punto.
geom_point()Podemos reemplazar los puntos por diferentes formas en el gráfico de
dispersión utilizando “shape =”, como se en la figura
siguuiente:
ggplot(IRIS, aes(Longitud.Petalo, Ancho.Petalo)) +
geom_point(shape = 25, fill = "yellow") # Para las formas 21 a 25, `fill =` controla el color de relleno de la forma.También es posible modificar el tamaño de la forma seleccionada con
“size =”
El color de la forma puede ser seleccionado con
“color =”
En el siguiente sitio web podrás encontrar una lista de colores disponibles:
Combinamos atributos
ggplot(IRIS, aes(Longitud.Petalo, Ancho.Petalo, shape = ESPECIE, color = ESPECIE)) +
geom_point(size= 3)
Los gráficos de líneas se utilizan típicamente para visualizar cómo una variable continua, en el eje y, cambia en relación con otra variable continua, generalmente vinculadas al tiempo(horas, meses, años, etc.), en el eje x.
Función: geom_line()
Para elaborar el gráfico de líneas vamos a trabajar con la base de datos denominada “PP_77_22” que contine los datos de precipitación obtenidos en el periodo 1977-2022.
## Rows: 46
## Columns: 2
## $ ANIO <dbl> 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987,…
## $ PP <dbl> 666.4, 553.2, 675.7, 532.4, 528.7, 410.9, 569.2, 484.0, 610.2, 37…
Renombramos variables
Visualizamos
## # A tibble: 46 × 2
## AÑO PRECIPITACION
## <dbl> <dbl>
## 1 1977 666.
## 2 1978 553.
## 3 1979 676.
## 4 1980 532.
## 5 1981 529.
## 6 1982 411.
## 7 1983 569.
## 8 1984 484
## 9 1985 610.
## 10 1986 379.
## # ℹ 36 more rows
Tengamos en cuenta que podemos modificar tanto el tipo como el ancho de las líneas en el gráfico.
Tipos de línea: Podemos elegir entre diferentes estilos, como líneas continuas, discontinuas o punteadas.
Ancho de línea: Es posible también ajustar el grosor de la línea para destacar o suavizar su apariencia.
Combinamos ambos argumentos…
Un histograma es un gráfico utilizado para representar la distribución de una variable numérica. Este tipo de gráfico divide el rango de los datos en intervalos (llamados “bins”) y muestra la frecuencia con la que los valores se ubican dentro de cada intervalo.
Función: geom_histogram()
Al observar un histograma, es importante plantearse las siguientes preguntas para interpretar correctamente los datos:
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Cambiamos color de los contenedores.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Modificamos color y relleno de los contenedores.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
A continuación pueden ver los nombres de algunos colores con la
función colors()
Podemos ajustar los contenedores siguiendo dos criterios:
bins. Usando este método especificamos el número de
contenedores.ggplot(PP_77_22, aes(PRECIPITACION)) +
geom_histogram(bins = 8, color = "gray", fill = "lightblue") +
theme_classic()binwidth. Con el segundo método, en lugar de especificar el
número de bins, especificamos el ancho de los bins. Por ejemplo,
establezcamos el ancho de cada contenedor en cien milímetros.ggplot(PP_77_22, aes(PRECIPITACION)) +
geom_histogram(binwidth = 100, color = "red", fill = "blue") +
theme_classic()Actividad
#AYUDA PARA SELECCIONAR EL PERIODO DE AÑOS DESEADO
PP_00_22 <- PP_77_22 %>%
filter(AÑO >= 2000 & AÑO <= 2022)
PP_00_22## # A tibble: 23 × 2
## AÑO PRECIPITACION
## <dbl> <dbl>
## 1 2000 548.
## 2 2001 463
## 3 2002 552.
## 4 2003 239
## 5 2004 338
## 6 2005 279.
## 7 2006 263.
## 8 2007 301.
## 9 2008 481
## 10 2009 339.
## # ℹ 13 more rows
## # A tibble: 1 × 1
## `mean(PRECIPITACION)`
## <dbl>
## 1 415.
ggplot(PP_00_22, aes(AÑO, PRECIPITACION)) +
geom_line(color = "blue") +
geom_hline(yintercept = 414.55, color = "red")ggplot(PP_00_22, aes(PRECIPITACION)) +
geom_histogram(binwidth = 50, color = "gray")+
geom_vline(xintercept = 414.55, color = "red")
El polígono de frecuencias es una alternativa al histograma que representa la distribución de una variable numérica mediante una línea que conecta los puntos medios o marcas de clase de los intervalos. Esto permite visualizar la forma general de la distribución de los datos de manera continua, facilitando comparaciones entre conjuntos de datos.
Función: geom_freqpoly()
Al analizar un polígono de frecuencias, es útil considerar las siguientes preguntas:
Combinamos un histograma con un polígono de frecuencias
ggplot(PP_77_22, aes(PRECIPITACION)) +
geom_histogram(binwidth = 100, color = "yellow") +
geom_freqpoly(binwidth = 100, color = "red", linewidth = 1.5)
El gráfico de cajas o boxplot, es una herramienta útil para representar la distribución de una variable cuantitativa. Se construye a partir del resumen de cinco números: el valor mínimo, el primer cuartil (Q1), la mediana (Q2), el tercer cuartil (Q3) y el valor máximo. Además, los boxplots pueden identificar posibles valores atípicos, proporcionando una visión clara de la dispersión y la simetría de los datos.
Función: geom_boxplot()
Al interpretar un gráfico de cajas, es útil hacerse las siguientes preguntas:
Eleaboramos los gráficos usando la base de datos “MANDARINAS_2024” obtenida por los estudiantes que cursaron la asignatura Estadística y Biometría durante el año 2024.
## tibble [419 × 8] (S3: tbl_df/tbl/data.frame)
## $ N : num [1:419] 1 2 3 4 5 6 7 8 9 10 ...
## $ GRUPO : num [1:419] 1 1 1 1 1 1 1 1 1 1 ...
## $ VARIEDAD : chr [1:419] "Clementina" "Clementina" "Clementina" "Clementina" ...
## $ N_DE_FRUTO : num [1:419] 19 9 21 8 4 30 22 23 17 27 ...
## $ PESO : num [1:419] 101 122 127 126 37 139 140 130 138 142 ...
## $ DIAM_ECUAT : num [1:419] 64.2 64.2 64.7 64.9 65.9 66.4 67.1 67.5 68.2 68.2 ...
## $ NIVEL_DE_DAÑO: num [1:419] 1 0 3 3 2 2 3 1 2 2 ...
## $ COLOR : num [1:419] 4 5 4 1 5 4 4 3 3 4 ...
¿Y si agregamos la media muestral?
ggplot(MANDARINAS, aes(DIAM_ECUAT, VARIEDAD, color = VARIEDAD)) +
geom_boxplot() +
stat_summary(fun = mean, color = "black") # función para agregar la media muestral y asignarle color## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_segment()`).
Actividad
Elaboramos un boxplot para la variable “peso” en función de cada “grupo”.
Cuando es de interés visualizar la distribución de una variable categórica debemos realizar un conteo de las diferentes categorías que observamos en una variable cualitativa o categórica(nominal u ordinal) o en una variable cuantitativa discreta. A menudo, la mejor manera de visualizar estos diferentes recuentos, también llamadas frecuencias, es a travéz de un gráfico de barras.
Sin embargo, una complicación es cómo se representan sus datos. ¿La variable categórica de interés está “precontada” o no? Dependiendo de cómo se representen sus datos categóricos, tendrá que agregar un tipo de capa geométrica diferente a su ggplot() para crear el gráfico.
Según se representen los datos categóricos (precontados o no), debemos agregar una capa diferente. Así, cuando la variable categórica cuya distribución quieres visualizar:
_ No está precontado en su marco de datos, usamos
geom_bar().
_ Está precontado en su marco de datos, usamos
geom_col() con la estética de la posición y asignada a la
variable que tiene los recuentos.
Para ralizar la represenetación gráfica, en esta oportunidad recurriremos a la base de datos denominada “ESTUDIANTES_2024” disponible en la nube.
ESTUDIANTES_2024 <- read_csv("https://docs.google.com/spreadsheets/d/1Mpkh3xnFmxjQeReY5lEiODOSVA31FcnoyuO-3T0Spzs/pub?output=csv")Mejoramos la gráfica
ggplot(ESTUDIANTES_2024, aes(NIVEL.DIF.CARR)) +
geom_bar(fill = "yellow", color = "black") +
ggtitle("Nivel de Dificultad de la Carrera de Ingeniería Agronómica") +
labs(x = "Nivel de dificultad", y = "N° de estudiantes") +
theme(axis.title.x = element_text(size = 16), # Disminuye el tamaño de letra de las categorías del eje "x"
axis.title.y = element_text(size = 16)) # Aumenta el tamaño de los valores del eje "y"
El gráfico de barras apiladas es una extensión del gráfico de barras, y es utilizado para mostrar la composición de una variable categórica en segmentos apilados que representan subcategorías. Cada barra total representa el valor de la categoría principal y se divide en partes que muestran cómo se distribuye el total entre las subcategorías.
Función:
geom_bar(position = "stack")
Al analizar un gráfico de barras apiladas, es importante reflexionar sobre las siguientes preguntas:
Estudiemos, por ejemplo, la opinión del “Nivel de dificultad” del Taller de R y RStudio, según el “Género”.
Modificamos la gráfica
ggplot(ESTUDIANTES_2024, aes(NIVEL.DIF.CARR, fill = GENERO)) +
geom_bar(color= "black") +
scale_fill_manual(values = c("Femenino" = "orange", "Masculino" = "white")) + # Colores personalizados
labs(x = "Nivel de dificultad",
y = "N° de estudiantes")Cambiamos horientación de las barras
ggplot(ESTUDIANTES_2024, aes(NIVEL.DIF.CARR, fill = GENERO)) +
geom_bar(color = "black") +
scale_fill_manual(values = c("Femenino" = "orange", "Masculino" = "gray")) +
labs(x = "Nivel de dificultad",
y = "N° de estudiantes") +
coord_flip() # Cambia la orientación de las barras a horizontal