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
.
Fíjate que tanto el título principal del gráfico como el de los ejes se modifican siguiendo lo aprendido en las secciones anteriores título.
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.
Es posible evitar esta característica de la función geom_bar() a através del argumento stat = "identity"
.
Puedes modificar el color de relleno de las barras con el argumento fill = color
.
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"
)
Nota que el resultado de esta función es exactamente el mismo que el de geom_bar(stat = "identity")
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
¿Qué pasa si no dispongo de una variable categórica? No pasa nada, puedes indicar x = ""
o x = 1
, por ejemplo, y se representará el boxplot sobre un valor del eje. Otra opción es indicar directamente la variable numérica y funcionará igual.
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"
)
¿Y si quiero representar el boxplot tumbado o sobre el eje y? Simplemente indica aes(x = ...)
y ggplot interpretará que pretendes mostrar el boxplot girado.
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.
Para hacer un histograma por grupos utiliza el argumento fill = ...
. también puedes utilizar el argumento color
, pero el resultado es menos legible.
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"
)
Fíjate en como vamos utilizando los argumentos color
o fill
según el tipo de geometría. No todas permiten ambas, pero en todas podremos jugar con alguna de ellas.
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"
)
Para modificar el color de la línea puedes usar el argumento color
dentro de geom_line()
.
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"
)
geom_point()
para hacer un gráfico de puntosgeom_bar()
para hacer un gráfico de barrasgeom_col()
para hacer un gráfico de columnasgeom_boxplot()
para hacer un boxplotgeom_histogram()
para hacer un histogramageom_density()
para hacer un gráfico de densidadgeom_density_2d()
para hacer un gráfico de densidad en 2dgeom_violin()
para hacer un gráfico de violíngeom_line()
para hacer un gráfico de líneasgeom_area()
para hacer un gráfico de área