Ir al contenido principal

Visualizar datos sobre el cambio climático con ggplot2: tutorial paso a paso

Aprende a usar ggplot2 en R para crear visualizaciones convincentes de datos sobre el cambio climático. Este tutorial paso a paso te enseña a encontrar, analizar y visualizar datos meteorológicos históricos.
Actualizado 17 sept 2026  · 11 min leer

Explorar con IA

ChatGPTClaudePerplexity

Este tutorial es una valiosa contribución de nuestra comunidad y ha sido editado por DataCamp para mejorar su claridad y precisión.

¿Te gustaría compartir tu experiencia? ¡Nos encantará leerte! Envía tus artículos o ideas a través de nuestro formulario de contribución de la comunidad.

"El calentamiento global no es una predicción. Está ocurriendo" - James Hansen

El cambio climático es un problema urgente que nos afecta a todos, y la visualización de datos puede ser una herramienta muy potente para crear conciencia. En este tutorial paso a paso, aprenderás a usar ggplot2 en R para crear visualizaciones impactantes de datos climáticos históricos. Al terminar, sabrás cómo encontrar conjuntos de datos curados, representar datos meteorológicos históricos y personalizar tus gráficos para contar una historia convincente.

El cambio climático es un problema urgente que nos afecta a todos, y la visualización de datos puede ser una herramienta muy potente para crear conciencia. En este tutorial paso a paso, aprenderás a usar ggplot2 en R para crear visualizaciones impactantes de datos climáticos históricos. Al terminar, sabrás cómo encontrar conjuntos de datos curados, representar datos meteorológicos históricos y personalizar tus gráficos para contar una historia convincente.

En este tutorial, aprenderás dónde encontrar datos históricos de temperatura fiables y curados y a visualizarlos con ggplot2.

  • Conocer dónde encontrar conjuntos de datos curados con datos meteorológicos históricos;
  • Sentirte cómodo/a representando datos meteorológicos históricos con ggplot2;
  • Ser capaz de personalizar tus gráficos de ggplot2 para contar mejor tu historia.

Paso 1: encontrar y cargar los datos

Los datos para este tutorial están disponibles en los National Centers for Environmental Information (NCEI). Los NCEI son la autoridad de referencia en datos ambientales en EE. UU. y proporcionan datos de alta calidad sobre clima, ecosistemas y recursos hídricos. El conjunto de datos Global Summary of the Year (GSOY) ofrece datos meteorológicos históricos por ciudad y estación. Para este tutorial, usaremos datos de Berkeley, CA. Si lo prefieres, puedes elegir otra ciudad.

Cargaremos los datos con read_csv. El primer argumento es la ruta al archivo; el segundo, col_select, indica a R qué columnas quieres cargar. Ten en cuenta que este conjunto incluye varias variables, pero solo nos interesan "DATE" y "TAVG". "DATE" contiene el año en que se observó la temperatura y "TAVG" es la temperatura media anual en grados Celsius. Para saber más sobre las variables disponibles, consulta el manual del conjunto de datos.

library(readr)2​3df <- read_csv('USC00040693.csv',4            col_select = c("DATE", "TAVG"))5​Rows: 118 Columns: 2── Column specification ────────────────────────────────────────────────────────Delimiter: ","dbl (2): DATE, TAVG

A continuación, imprime tu conjunto de datos y sus estadísticas descriptivas para hacerte una idea inicial. La función de R summary() nos indica que los datos van de 1893 a 2019 y que la temperatura media anual mínima observada en Berkeley (CA) en ese periodo fue de 12,9 °C. La temperatura media máxima fue de 15,93 °C.

summary(df)      DATE           TAVG       Min.   :1893   Min.   :12.90   1st Qu.:1926   1st Qu.:13.50   Median :1956   Median :13.91   Mean   :1956   Mean   :13.97   3rd Qu.:1985   3rd Qu.:14.33   Max.   :2019   Max.   :15.93                  NA's   :33     

Paso 2: tratar los valores ausentes

La función summary() reveló que hay 33 temperaturas ausentes. También puedes verificar los NA de una variable concreta con la función is.na(), que devuelve TRUE si la observación es un NA. Después, puedes sumar todos los valores ausentes. La función sum() convierte TRUE en 1.

print(paste("There are", sum(is.na(df$TAVG)), "missing values in this dataset."))[1] "There are 33 missing values in this dataset."

Como estamos trabajando con una serie temporal, rellenaremos los valores ausentes con interpolación lineal. Este método asume que los datos varían linealmente durante el periodo sin observaciones. De hecho, cuando representas una serie temporal con un gráfico de líneas, los intervalos entre observaciones, incluso cuando no faltan datos, también se rellenan con una línea recta que une los dos puntos.

Para realizar la interpolación lineal, usaremos el paquete imputeTS. Tras instalar y cargar la librería, puedes usar na_interpolation() para completar los valores ausentes. Recibe dos argumentos: primero, la columna del dataframe que quieres tratar y, segundo, el método de imputación que deseas aplicar.

install.packages("imputeTS", quiet = TRUE)
library(imputeTS)Registered S3 method overwritten by 'quantmod': method from as.zoo.data.frame zoo
df$TAVG <- na_interpolation(df$TAVG, option ="linear")

Paso 3: crear la primera versión del gráfico

Una visualización en ggplot2 se construye por capas. Como se muestra en la figura de abajo, cada capa contiene un objeto geom, es decir, un elemento visible del gráfico (líneas, puntos, etc.).

Primero, debes pasar un conjunto de datos a la función ggplot(). Después, mapearás variables a estéticas, es decir, propiedades visuales de un objeto geom. Entre las estéticas están la posición en el eje y, la posición en el eje x, el color o el tamaño. Para saber más sobre ggplot, echa un vistazo al curso Introduction to Data Visualization with ggplot2, de Rick Scavetta, con quien aprendí gran parte de mis habilidades de visualización.

Capas de ggplot2. Imagen creada por el autor.

Abajo, nuestro mapeo (aes()) le indica a ggplot que haga depender la posición en el eje x de la variable "DATE" y la posición en el eje y de la temperatura. Ten en cuenta que, si representas solo esta capa, ggplot solo mostrará los ejes.

Además, antes de empezar con ggplot, estableceremos algunas configuraciones globales que aplicaremos a todos los gráficos. La primera es el tamaño y la resolución. La segunda es el tema.

library(ggplot2)options(repr.plot.width = 10, repr.plot.height = 6, repr.plot.res = 150 )theme_set(theme_bw())
axes <- ggplot(data = df, aes(x = DATE, y = TAVG))axes

Ahora puedes añadir una segunda capa con puntos que indiquen las temperaturas a lo largo del tiempo. Observa que puedes sumar la capa al gráfico creado en el paso anterior.

dot_plot <- axes + geom_point()dot_plot

Por último, añade una tercera capa con las líneas. Es importante señalar que algunos autores sostienen que las líneas no representan datos observados y que deben usarse con cautela. Para una discusión completa, consulta el capítulo 13 de Fundamentals of Data Visualization de Claus O. Wilke.

dot_plot +geom_line()

Paso 4: personalizar el gráfico

En esta sección, aprenderás a personalizar tu gráfico para que sea claro, informativo y atractivo.

Para hacer más visible el aumento de temperatura, también asignaremos la estética de color de los puntos a "TAVG". Como es una variable numérica, ggplot2 usará un degradado para representar valores continuos como colores. Con la función scale_color_gradient() puedes elegir qué color representa las temperaturas bajas y cuáles las altas.

Además, puedes definir las etiquetas de los ejes x e y con xlab() y ylab(), respectivamente. Puedes añadir un título con ggtitle(). Por último, aumentaremos el tamaño de los puntos y añadiremos transparencia para hacer visibles los solapamientos.

ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Historical air temperature trend in Berkeley, CA")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")

Edward Tufte, referente en el campo de la visualización de datos, recomienda maximizar la proporción de tinta dedicada a mostrar datos no redundantes. Afirma que así el gráfico es más claro y evita distracciones para quien lo interpreta.

El tema de ggplot2 que estamos usando (theme_bw()) ya sigue en gran medida las recomendaciones de Tufte, pero aún podríamos eliminar las rejillas del panel en el gráfico anterior. Para ello, utiliza la función theme() y pásale dos argumentos: panel.grid.minor = element_blank() y panel.grid.major = element_blank().

ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low =  "#47BEFB", high = "#ED6AA8")+ggtitle("Historical air temperature trend in Berkeley, CA")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme(# Eliminates grids:        panel.grid.minor = element_blank(),        panel.grid.major = element_blank())

Paso 5: crear un tema de ggplot2 para tu visualización

Ahora aprenderás a crear tu propio tema de ggplot2. Como ejemplo, crearemos un theme_datacamp() para que el gráfico sea más coherente y esté en sintonía con el sitio web de DataCamp.

Primero, se creó una lista con algunos colores de DataCamp para su uso posterior.

datacamp_colors <- list(green = "#74F065",                         darkblue = "#05192D",                         blue = "#47BEFB",                         pink = "#ED6AA8")

Después, cargaremos la fuente de Google "Manjari" para usarla en nuestro tema. Puedes cargarla fácilmente con el paquete "showtext". Si no lo tienes, instálalo.

install.packages("showtext", quiet = TRUE)

A continuación, cargamos el paquete y usamos la función font_add_google() para cargar "Manjari". También indicamos a R que renderice el texto usando "showtext" con showtext_auto():

library(showtext)font_add_google("Manjari")showtext_auto()Loading required package: sysfontsLoading required package: showtextdb

Ahora, usaremos theme() para personalizar el gráfico. La figura de abajo muestra algunos de los argumentos disponibles. Para ver la lista completa, consulta la referencia de ggplot2.

 

Argumentos del tema. Imagen creada por el autor.

Puedes crear un tema nuevo con una función que llame a la función theme() de ggplot2 con tus especificaciones personalizadas. Observa que partimos del tema en blanco y negro (theme_bw()) y después eliminamos rejillas y cambiamos los colores de fondo, panel y texto. Además, se añade un margen de 0,5 cm al gráfico. Para facilitar cambios futuros, se han creado dos argumentos para que el usuario especifique los colores de texto/panel y de fondo.

theme_datacamp <- function(text_panel_color, background_color) {  theme_bw()+  theme(text=element_text(size=28, family="Manjari", face = "bold", color = text_panel_color),    	# Eliminates grids        panel.grid.minor = element_blank(),        panel.grid.major = element_blank(),    	# Changes panel, plot and legend background to dark blue        panel.background = element_rect(fill = background_color),        plot.background = element_rect(fill =  background_color),        legend.background = element_rect(fill= background_color),        # Changes legend texts color to white        legend.text =  element_text(color = text_panel_color,                                     margin = margin(0, 0, 0, -0.5, "cm")),        legend.title = element_text(color = text_panel_color),        legend.text.align = 0,        # Changes color of plot border to white        panel.border = element_rect(size = 1, color = text_panel_color),        # Changes color of axis texts to white        axis.text.x = element_text(color = text_panel_color),        axis.text.y = element_text(color = text_panel_color),        axis.title.x = element_text(color= text_panel_color),        axis.title.y = element_text(color= text_panel_color),        # Changes axis ticks color to white        axis.ticks.y = element_line(color = text_panel_color),        axis.ticks.x = element_line(color = text_panel_color),        # Adds margin        plot.margin = margin(1, 1, 1, 1, "cm")  )}

Ahora, puedes añadir theme_datacamp() a tu gráfico indicando los colores que prefieras. Aquí he usado los colores de Datacamp:

ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Historical air temperature trend in Berkeley, CA")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green,                background_color = datacamp_colors$darkblue)

Por último, puedes mostrar la tendencia de temperatura con un suavizado LOESS (locally estimated scatterplot smoothing), como recomienda Claus O. Wilke en el capítulo 14 de Fundamentals of Data Visualization. Para ello, añade una capa de ggplot con el elemento geom_smooth().

ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = datacamp_colors$green, se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Historical air temperature trend in Berkeley, CA",       subtitle = "Visualization using theme_datacamp()")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green,                background_color = datacamp_colors$darkblue)

No dudes en probar otras combinaciones de colores y tipografías para conseguir visualizaciones más convincentes. Abajo, por ejemplo, cambio la curva LOESS y los colores del panel y del texto a blanco.

ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = "white", se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Historical air temperature trend in Berkeley, CA",       subtitle = "Visualization using theme_datacamp()")+xlab("Year")+ylab("Annual Mean Temperature in Berkeley [ºC]")+theme_datacamp(text_panel_color = "white",                background_color = datacamp_colors$darkblue)

Conclusión

En este tutorial has aprendido a usar ggplot2 en R para visualizar de forma eficaz datos climáticos históricos. Hemos visto desde cómo obtener datos fiables hasta cómo crear un tema personalizado de ggplot2, dotándote de habilidades para sensibilizar sobre el cambio climático a través de la visualización de datos.

Como siguiente paso, te recomendamos profundizar en visualización de datos y programación en R con los cursos de DataCamp Introduction to Data Visualization with ggplot2 e Intermediate R. Te ayudarán a afianzar lo aprendido aquí y a afrontar proyectos más complejos.

Temas
R
Análisis de datos
Relacionado

Tutorial

Cómo hacer un histograma ggplot2 en R

Aprenda a hacer un histograma ggplot2 en R. Haga histogramas en R basándose en la gramática de los gráficos.

Kevin Babitz

15 min

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

15 min

Tutorial

Tutorial de tablas de contingencia en R

En este tutorial, aprenderás a crear tablas de contingencia y a probar y cuantificar las relaciones visibles en ellas.
Łukasz Deryło's photo

Łukasz Deryło

10 min

Tutorial

Cómo hacer un histograma en R básico: 6 pasos con ejemplos

Aprende a crear un histograma con R básico utilizando la función hist(). En 6 sencillos pasos (con ejemplos) puedes hacer un histograma básico en R para un análisis exploratorio.

Kevin Babitz

10 min

Tutorial

Gráfico lineal de series temporales Matplotlib

Este tutorial explora cómo crear y personalizar gráficos de líneas de series temporales en matplotlib.
Elena Kosourova's photo

Elena Kosourova

8 min

Tutorial

Tutorial de Python Seaborn Line Plot: Crear visualizaciones de datos

Descubra cómo utilizar Seaborn, una popular biblioteca de visualización de datos de Python, para crear y personalizar gráficos de líneas en Python.
Elena Kosourova's photo

Elena Kosourova

12 min

Ver MásVer Más