data(penguins, package = "palmerpenguins")
Geometrías
En esta sección veremos las geometrías más importantes disponibles en ggplot para visualizar un conjunto de datos. Estas geometrías se pueden combinar entre sí y añadir diferentes stats
sobre las mismas. Esto permite una variedad de posibilidades muy interesante a la hora de visualizar datos. Este tipo de casos más concretos, se tratarán en el blog de manera individualizada. En esta guía nos centraremos en conocer las geometrías esenciales. Empezamos!
Cómo hacer un gráfico de dispersión o scatter plot en ggplot
En primer lugar, cargamos una librería de datos llamada palmerpenguins
que contiene diversas métricas de los pingüinos de las islas del archipiélago Palmer de la Antártida.Si no tienes instalada esta librería lo puedes hacer a través de install.packages("palmerpenguins")
.
A continuación, utilizaremos la función geom_point()
para representar un el gráfico de dispersión o también conocido como scatter plot
.
Por otro lado, fijamos el tema antes de empezar con la función theme_set()
. Si no te acuerdas cómo fijar un tema puedes volver a leer la sección sobre cómo personalizar un tema en ggplot.
library(ggplot2)
theme_set(theme_elartedeldato())
Ahora ya estamos listos para realizar el gráfico de dispersión. Para ello, utilizamos la función geom_point()
.
ggplot(penguins, aes(bill_length_mm, bill_depth_mm, color = species)) +
geom_point() +
labs(
title = "Gráfico de dispersión",
subtitle = "Longitud frente a profundidad del pico de pingüinos del archipiélago Palmer según especie",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un gráfico de barras con ggplot2
Para hacer un gráfico de barras en ggplot utilizamos la función geom_bar()
. Por defecto, esta función cuenta automáticamente el número de eventos de cada categoría de x
indicada en la estética dentro de la función aes()
, en este caso la variable species.
ggplot(penguins, aes(species)) +
geom_bar(fill = "#feaa44") +
labs(
title = "Gráfico de barras",
subtitle = "Número de pingüinos por especie del archipiélago Palmer",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo girar un gráfico de barras
Para girar el gráfico de barras simplemente cambiamos el argumento de entrada en la estética, es decir:
ggplot(penguins, aes(y = species)) +
geom_bar(fill = "#feaa44") +
labs(
title = "Gráfico de barras",
subtitle = "Número de pingüinos por especie del archipiélago Palmer",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un gráfico de columnas con ggplot2
El gráfico de columnas con ggplot se puede hacer a través de la función geom_col()
. El mecanismo es similar al de geometrías anteriores.
|>
penguins ::group_by(species) |>
dplyr::count() -> df
dplyr
ggplot(df, aes(species, n)) +
geom_col(fill = "#feaa44") +
labs(
title = "Gráfico de columnas",
subtitle = "Número de pingüinos por especie del archipiélago Palmer",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un boxplot con ggplot2
El boxplot es un gráfico de resume una variable a través de sus cuartiles. Para hacer un boxplot en R con ggplot, necesitaremos un dataset con una variable categórica y otra numérica a resumir y aplicaremos
ggplot(penguins, aes(species, bill_length_mm, color = species)) +
geom_boxplot() +
labs(
title = "Boxplot",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por especies",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un histograma con ggplot2
Dentro de los gráficos de distribución se encuentra el histograma. En ggplot, lo puedes utilizar con geom_histogram()
indicando dentro de la función aes()
la variable principal.
ggplot(penguins, aes(bill_length_mm, fill = species)) +
geom_histogram() +
labs(
title = "Histograma",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por species",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo modificar el número y ancho de barraen un histograma de ggplot
Para modificar el número de barras de un gráfico de ggplot utilizamos el argumento bins
. Para modificar su ancho, binwidth
. Obviamente no se pueden modificar ambos a la vez, y en caso de hacerlo, ggplot atenderá al ancho de barra.
ggplot(penguins, aes(bill_length_mm, fill = species)) +
geom_histogram(bins = 10) +
labs(
title = "Histograma",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por species",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un gráfico de densidad con ggplot2
Al igual que el histograma, el gráfico de densidad nos permite representar una distribución de una variable. La función que utilizamos en ggplot es geom_density()
. El funcionamiento es similar al de geom_histogram()
.
ggplot(penguins, aes(bill_length_mm, fill = species)) +
geom_density() +
labs(
title = "Gráfico de densidad",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por species",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo cambiar el estilo de un gráfico de densidad
Podemos modificar ligeramente el gráfico anterior para mostrar mejor cada una de las densidades. Para ello añadimos el argumento alpha = 0.5
a geom_density()
o bien dentro de aes()
. Además, cambiamos el color de la línea de las densidades con el argumento color = ...
.
ggplot(penguins, aes(bill_length_mm, fill = species, color = species)) +
geom_density(alpha = 0.5) +
labs(
title = "Gráfico de densidad",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por species",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un gráfico de densidad en 2D con ggplot2
ggplot(penguins, aes(bill_length_mm, bill_depth_mm, color = species)) +
geom_density2d() +
labs(
title = "Gráfico de densidad en 2D",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por species",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un gráfico de violín con ggplot2
ggplot(penguins, aes(species, bill_depth_mm, color = species, fill = species)) +
geom_violin() +
labs(
title = "Gráfico de violín",
subtitle = "Distribución de longitud del pico de pingüinos del archipiélago Palmer por species",
caption = "Fuente: librería palmerpenguins. elartedeldato.com"
)
Cómo hacer un gráfico de líneas con ggplot2
Para los siguientes ejemplos, utilizaremos los datos del dataset storms
de dplyr
para visualizar el número de tormentas entre 1975 y 2020 registradas en la base de datos de huracanes atlánticos de la NOAA.
Para hacer un gráfico de línea necesitaremos dos variables numéricas que indicaremos en la función aes()
e indicar la geometría adecuada, en este caso, geom_line()
.
<- dplyr::storms |>
df_storms ::group_by(año = year) |>
dplyr::summarize(n = dplyr::n_distinct(name))
dplyr
ggplot(df_storms, aes(año, n)) +
geom_line() +
labs(
title = "Gráfico de líneas",
subtitle = "Número de tormentas anual registradas por la NOAA",
caption = "Fuente: NOAA. elartedeldato.com"
)
Cómo hacer un gráfico de área con ggplot2
Dentro de los gráfico básicos de ggplot se encuentra el gráfico de área. Al igual que el de línea podemos utilizarlo para representar la evolución de un evento en el tiempo.
En ggplot utilizaremos la función geom_area()
con el argumento fill
si queremos personalizar el color por defecto del área en sí.
ggplot(df_storms, aes(año, n)) +
geom_area(fill = "#216593") +
labs(
title = "Gráfico de área",
subtitle = "Número de tormentas anual registradas por la NOAA",
caption = "Fuente: NOAA. elartedeldato.com"
)