R

R

Tutorial R: Personalización y temas

Aprende a personalizar ejes, títulos, leyendas y temas en ggplot2, además de usar paletas de colores y exportar gráficos con alta calidad.

Aprende R y certifícate

Personalización de ejes, títulos y leyendas

La personalización de los elementos básicos de un gráfico es fundamental para crear visualizaciones profesionales y efectivas. En ggplot2, podemos modificar prácticamente cualquier aspecto de los ejes, títulos y leyendas para mejorar la claridad y el impacto visual de nuestros gráficos.

Personalización de títulos

Los títulos son elementos esenciales para contextualizar nuestras visualizaciones. Con ggplot2 podemos personalizar el título principal, subtítulo y la nota al pie mediante la función labs():

# Creamos un gráfico base
library(ggplot2)
datos <- mtcars

grafico_base <- ggplot(datos, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point(size = 3)

# Añadimos títulos personalizados
grafico_base + 
  labs(
    title = "Relación entre peso y consumo de combustible",
    subtitle = "Datos de automóviles de 1974",
    caption = "Fuente: Conjunto de datos mtcars",
    x = "Peso (1000 lbs)",
    y = "Millas por galón",
    color = "Cilindros"
  )

También podemos modificar la apariencia de estos elementos con theme():

grafico_base + 
  labs(title = "Relación entre peso y consumo") +
  theme(
    plot.title = element_text(
      size = 16,
      face = "bold",
      color = "navy",
      hjust = 0.5  # Centrado horizontal
    )
  )

Personalización de ejes

Los ejes son la columna vertebral de cualquier gráfico y su correcta configuración mejora significativamente la interpretación de los datos.

Modificación de escalas

Podemos controlar las escalas de los ejes con funciones como scale_x_continuous() y scale_y_continuous():

grafico_base +
  scale_x_continuous(
    limits = c(1, 6),        # Rango de valores
    breaks = seq(1, 6, 0.5), # Marcas principales
    minor_breaks = seq(1, 6, 0.25), # Marcas secundarias
    labels = function(x) paste(x, "klb") # Formato personalizado
  ) +
  scale_y_continuous(
    limits = c(10, 35),
    breaks = seq(10, 35, 5)
  )

Para datos categóricos, usamos scale_x_discrete() o scale_y_discrete():

# Ejemplo con datos categóricos
ggplot(mpg, aes(x = class, y = hwy)) +
  geom_boxplot() +
  scale_x_discrete(
    limits = c("compact", "midsize", "suv", "pickup"),
    labels = c("Compacto", "Mediano", "SUV", "Camioneta")
  )

Transformación de ejes

A veces necesitamos transformar la escala para visualizar mejor ciertos patrones:

# Datos con distribución sesgada
set.seed(123)
datos_sesgados <- data.frame(
  x = 1:100,
  y = exp(rnorm(100, 0, 0.5))
)

# Escala logarítmica para el eje Y
ggplot(datos_sesgados, aes(x = x, y = y)) +
  geom_point() +
  scale_y_log10(
    breaks = c(0.1, 0.5, 1, 2, 5, 10),
    labels = scales::comma
  ) +
  labs(title = "Transformación logarítmica del eje Y")

Personalización de leyendas

Las leyendas ayudan a interpretar los elementos visuales del gráfico. Podemos modificar su posición, título y apariencia:

grafico_base +
  labs(color = "Número de cilindros") +
  theme(
    legend.position = "bottom",  # Opciones: "top", "right", "bottom", "left", "none"
    legend.title = element_text(face = "bold"),
    legend.background = element_rect(fill = "lightyellow", color = "gray"),
    legend.key = element_rect(fill = "white")
  )

Para cambiar la disposición de la leyenda:

grafico_base +
  guides(
    color = guide_legend(
      title = "Cilindros",
      nrow = 1,           # Elementos en una sola fila
      override.aes = list(size = 5),  # Tamaño de los puntos en la leyenda
      title.position = "top"
    )
  )

Rotación y formato de etiquetas

Cuando tenemos etiquetas largas o muchas categorías, es útil rotar las etiquetas:

# Datos de ejemplo con categorías largas
datos_categorias <- data.frame(
  categoria = c("Producto A muy largo", "Producto B extenso", 
                "Producto C con nombre largo", "Producto D"),
  valor = c(15, 25, 10, 30)
)

ggplot(datos_categorias, aes(x = categoria, y = valor)) +
  geom_col() +
  theme(
    axis.text.x = element_text(
      angle = 45,        # Ángulo de rotación
      hjust = 1,         # Alineación horizontal
      vjust = 1          # Alineación vertical
    )
  )

Personalización de rejillas y fondos

Las rejillas y fondos pueden mejorar o empeorar la legibilidad del gráfico:

grafico_base +
  theme(
    # Eliminar líneas de rejilla menores
    panel.grid.minor = element_blank(),
    
    # Personalizar líneas de rejilla mayores
    panel.grid.major = element_line(color = "gray90", linetype = "dashed"),
    
    # Fondo del panel
    panel.background = element_rect(fill = "white"),
    
    # Fondo del área de trazado
    plot.background = element_rect(fill = "aliceblue", color = NA)
  )

Combinando múltiples personalizaciones

En la práctica, normalmente aplicamos varias personalizaciones a la vez:

ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl), shape = factor(am))) +
  geom_point(size = 3, alpha = 0.8) +
  labs(
    title = "Relación entre peso y rendimiento de combustible",
    subtitle = "Agrupado por cilindros y tipo de transmisión",
    x = "Peso del vehículo (1000 lbs)",
    y = "Rendimiento (millas por galón)",
    color = "Cilindros",
    shape = "Transmisión"
  ) +
  scale_color_brewer(palette = "Set1") +
  scale_shape_manual(values = c(16, 17),
                     labels = c("Automática", "Manual")) +
  theme_minimal() +
  theme(
    plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
    plot.subtitle = element_text(size = 10, hjust = 0.5, margin = margin(b = 20)),
    axis.title = element_text(face = "bold"),
    legend.position = "right",
    legend.box = "vertical",
    panel.grid.minor = element_blank()
  )

Anotaciones y textos explicativos

Añadir anotaciones puede enriquecer significativamente nuestros gráficos:

# Gráfico con anotaciones
ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  annotate(
    "text",
    x = 5, 
    y = 30,
    label = "Correlación negativa\nentre peso y rendimiento",
    color = "red",
    fontface = "italic",
    size = 4
  ) +
  annotate(
    "rect",
    xmin = 3.5, xmax = 5.5,
    ymin = 10, ymax = 15,
    alpha = 0.2,
    fill = "yellow"
  ) +
  labs(title = "Gráfico con anotaciones")

La personalización de ejes, títulos y leyendas es un paso fundamental para transformar un gráfico básico en una visualización profesional. Estas técnicas nos permiten mejorar tanto la estética como la claridad informativa de nuestros gráficos, facilitando la interpretación de los datos por parte de nuestra audiencia.

Temas predefinidos y personalización

Los temas en ggplot2 son conjuntos de ajustes visuales predefinidos que permiten cambiar rápidamente la apariencia general de un gráfico. Estos temas afectan elementos como el fondo, las líneas de cuadrícula, los colores y las fuentes, permitiéndonos crear visualizaciones con un aspecto profesional y coherente sin necesidad de personalizar cada elemento individualmente.

Temas incorporados en ggplot2

ggplot2 incluye varios temas predefinidos que podemos aplicar fácilmente a nuestros gráficos. Cada uno tiene un estilo visual distinto adaptado a diferentes contextos:

# Creamos un gráfico base para mostrar los diferentes temas
library(ggplot2)
p <- ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point(size = 2) +
  labs(title = "Relación entre peso y consumo",
       x = "Peso (1000 lbs)",
       y = "Millas por galón",
       color = "Cilindros")

# Tema por defecto
p + theme_gray() # Este es el tema que se aplica si no especificamos ninguno

Algunos de los temas más utilizados son:

  • theme_minimal(): Un tema minimalista con fondo blanco y líneas de cuadrícula sutiles.
p + theme_minimal()
  • theme_classic(): Un tema clásico con ejes negros y sin líneas de cuadrícula, similar a los gráficos tradicionales.
p + theme_classic()
  • theme_bw(): Un tema en blanco y negro con fondo blanco y bordes negros.
p + theme_bw()
  • theme_light(): Un tema ligero con líneas de cuadrícula y bordes sutiles.
p + theme_light()
  • theme_dark(): Un tema oscuro con fondo negro, útil para presentaciones.
p + theme_dark()
  • theme_void(): Un tema vacío sin ejes ni cuadrícula, ideal para gráficos especiales como mapas o redes.
p + theme_void()

Personalización de temas existentes

Podemos combinar un tema predefinido con ajustes personalizados para adaptarlo a nuestras necesidades:

p + 
  theme_minimal() +
  theme(
    plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
    axis.title = element_text(face = "italic"),
    legend.position = "bottom"
  )

Creación de temas personalizados

Si necesitamos aplicar el mismo estilo a múltiples gráficos, podemos crear nuestro propio tema personalizado:

# Definimos nuestro tema personalizado
mi_tema <- theme_minimal() +
  theme(
    # Elementos de texto
    plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
    plot.subtitle = element_text(size = 10, hjust = 0.5),
    axis.title = element_text(face = "bold", size = 10),
    axis.text = element_text(size = 9),
    
    # Elementos del panel
    panel.grid.major = element_line(color = "gray90"),
    panel.grid.minor = element_blank(),
    panel.border = element_rect(color = "gray80", fill = NA),
    
    # Leyenda
    legend.position = "bottom",
    legend.background = element_rect(fill = "white", color = NA),
    legend.key = element_rect(fill = NA, color = NA),
    
    # Márgenes
    plot.margin = margin(t = 10, r = 10, b = 10, l = 10)
  )

# Aplicamos nuestro tema personalizado
p + mi_tema

Establecer un tema global

Si queremos aplicar el mismo tema a todos nuestros gráficos en una sesión, podemos establecerlo como tema global:

# Establecer un tema global
theme_set(theme_minimal())

# Ahora todos los gráficos usarán theme_minimal() por defecto
ggplot(mtcars, aes(x = hp, y = qsec)) +
  geom_point()

# Podemos seguir aplicando modificaciones adicionales
ggplot(mtcars, aes(x = disp, y = drat, color = factor(gear))) +
  geom_point() +
  theme(legend.position = "top")

Temas de paquetes externos

Existen paquetes adicionales que proporcionan temas más especializados:

  • ggthemes: Ofrece temas inspirados en publicaciones y herramientas conocidas.
# Instalar si es necesario
# install.packages("ggthemes")
library(ggthemes)

# Tema estilo The Economist
p + theme_economist() + scale_color_economist()

# Tema estilo FiveThirtyEight
p + theme_fivethirtyeight() + scale_color_fivethirtyeight()

# Tema estilo Excel
p + theme_excel() + scale_color_excel()

# Tema estilo Tufte
p + theme_tufte()
  • hrbrthemes: Proporciona temas tipográficamente agradables con fuentes modernas.
# install.packages("hrbrthemes")
library(hrbrthemes)

p + 
  theme_ipsum() +
  scale_color_ipsum()

Personalización de elementos específicos

Podemos ajustar elementos específicos de un tema utilizando las funciones element_text(), element_line(), element_rect() y element_blank():

p + theme(
  # Personalizar texto
  plot.title = element_text(
    family = "Arial",
    size = 16,
    face = "bold",
    color = "#2C3E50"
  ),
  
  # Personalizar líneas
  panel.grid.major = element_line(
    color = "#E8E8E8",
    size = 0.5,
    linetype = "dashed"
  ),
  
  # Personalizar rectángulos
  panel.background = element_rect(
    fill = "#F9F9F9",
    color = "#E0E0E0",
    size = 0.5
  ),
  
  # Eliminar elementos
  panel.grid.minor = element_blank(),
  
  # Ajustar márgenes
  plot.margin = margin(t = 20, r = 20, b = 20, l = 20, unit = "pt")
)

Guardar y reutilizar temas

Para reutilizar un tema personalizado en diferentes proyectos, podemos guardarlo como una función:

# Definir un tema como función
tema_corporativo <- function(base_size = 11, base_family = "") {
  theme_minimal(base_size = base_size, base_family = base_family) %+replace%
    theme(
      # Colores corporativos ficticios
      plot.title = element_text(face = "bold", size = rel(1.2), hjust = 0.5),
      plot.subtitle = element_text(hjust = 0.5),
      panel.background = element_rect(fill = "#F8F9FA", color = NA),
      panel.grid.major = element_line(color = "#E9ECEF"),
      panel.grid.minor = element_blank(),
      axis.title = element_text(face = "bold"),
      legend.title = element_text(face = "bold"),
      plot.caption = element_text(size = rel(0.8), color = "#6C757D")
    )
}

# Aplicar nuestro tema corporativo
p + tema_corporativo(base_size = 12)

Ajustes para diferentes formatos de salida

Dependiendo del formato de salida (pantalla, presentación, publicación), podemos necesitar diferentes configuraciones:

# Tema para presentaciones (texto más grande, colores contrastantes)
tema_presentacion <- theme_minimal() +
  theme(
    text = element_text(size = 14),
    plot.title = element_text(size = 18, face = "bold"),
    axis.title = element_text(size = 16),
    axis.text = element_text(size = 14),
    legend.text = element_text(size = 14)
  )

# Tema para publicaciones (más compacto, enfocado en los datos)
tema_publicacion <- theme_classic() +
  theme(
    text = element_text(size = 10),
    plot.title = element_text(size = 12, face = "bold"),
    axis.title = element_text(size = 10),
    axis.text = element_text(size = 9),
    legend.position = "bottom",
    legend.box = "horizontal",
    legend.margin = margin(t = 0, r = 0, b = 0, l = 0)
  )

# Aplicar según el contexto
p + tema_presentacion
p + tema_publicacion

Los temas en ggplot2 son una herramienta poderosa para mejorar la apariencia de nuestros gráficos de manera coherente y eficiente. Ya sea utilizando los temas predefinidos o creando nuestros propios estilos personalizados, podemos adaptar nuestras visualizaciones a diferentes contextos y necesidades sin tener que reescribir código repetitivo.

Paletas de colores y exportación de alta calidad

El color es uno de los elementos más importantes en la visualización de datos, ya que no solo mejora la estética de nuestros gráficos, sino que también comunica información. Complementariamente, saber exportar nuestras visualizaciones con alta calidad es esencial para compartir nuestro trabajo de manera profesional.

Paletas de colores en ggplot2

ggplot2 ofrece varias funciones para controlar los esquemas de color en nuestras visualizaciones:

  • scale_color_*(): Controla el color de líneas y puntos
  • scale_fill_*(): Controla el color de relleno de áreas
  • scale_alpha_*(): Controla la transparencia
  • scale_size_*(): Controla el tamaño de los elementos

Paletas secuenciales, divergentes y cualitativas

Dependiendo del tipo de datos, necesitaremos diferentes tipos de paletas:

# Datos de ejemplo
library(ggplot2)
library(dplyr)

# Creamos datos para demostrar diferentes paletas
set.seed(123)
datos_ejemplo <- data.frame(
  categoria = factor(rep(LETTERS[1:8], each = 3)),
  valor = c(rnorm(12, 10, 2), rnorm(12, 5, 2))
)

# Paleta cualitativa (para categorías)
ggplot(datos_ejemplo, aes(x = categoria, y = valor, fill = categoria)) +
  geom_boxplot() +
  scale_fill_brewer(palette = "Set2") +
  labs(title = "Paleta cualitativa (Set2)",
       subtitle = "Ideal para categorías nominales")

Las paletas secuenciales son perfectas para datos ordenados o continuos:

# Datos continuos
datos_temp <- data.frame(
  x = rep(1:10, each = 10),
  y = rep(1:10, times = 10),
  z = as.vector(volcano[1:10, 1:10])
)

# Paleta secuencial
ggplot(datos_temp, aes(x = x, y = y, fill = z)) +
  geom_tile() +
  scale_fill_viridis_c(option = "plasma") +
  labs(title = "Paleta secuencial (Plasma)",
       subtitle = "Ideal para datos continuos")

Las paletas divergentes son útiles para datos con un punto medio significativo:

# Datos con valores positivos y negativos
datos_div <- data.frame(
  x = rep(1:10, each = 10),
  y = rep(1:10, times = 10),
  z = as.vector(scale(volcano[1:10, 1:10]))
)

# Paleta divergente
ggplot(datos_div, aes(x = x, y = y, fill = z)) +
  geom_tile() +
  scale_fill_gradient2(
    low = "blue", 
    mid = "white", 
    high = "red", 
    midpoint = 0
  ) +
  labs(title = "Paleta divergente",
       subtitle = "Ideal para datos con punto medio natural")

Paletas del paquete RColorBrewer

El paquete RColorBrewer ofrece paletas de colores profesionales diseñadas por Cynthia Brewer:

# Cargar el paquete si es necesario
# install.packages("RColorBrewer")
library(RColorBrewer)

# Ver todas las paletas disponibles
# display.brewer.all()

# Ejemplo con paleta cualitativa
ggplot(mpg, aes(x = class, fill = class)) +
  geom_bar() +
  scale_fill_brewer(palette = "Paired") +
  theme_minimal() +
  labs(title = "Tipos de vehículos",
       subtitle = "Usando paleta Paired de RColorBrewer")

Para datos continuos, podemos usar:

# Ejemplo con paleta secuencial
ggplot(diamonds, aes(x = carat, y = price, color = price)) +
  geom_point(alpha = 0.6) +
  scale_color_distiller(palette = "YlOrRd", direction = 1) +
  theme_minimal() +
  labs(title = "Relación entre quilates y precio",
       subtitle = "Usando paleta YlOrRd de RColorBrewer")

Paletas viridis

Las paletas viridis están diseñadas para ser perceptualmente uniformes, accesibles para personas con daltonismo y se ven bien en blanco y negro:

# Ejemplo con viridis
ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
  geom_violin() +
  scale_fill_viridis_d() +  # 'd' para datos discretos
  theme_minimal() +
  labs(title = "Distribución de precios por corte",
       subtitle = "Usando paleta viridis predeterminada")

Viridis ofrece varias opciones:

# Diferentes opciones de viridis
p1 <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point(size = 3) +
  scale_color_viridis_d(option = "viridis") +
  labs(title = "viridis")

p2 <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point(size = 3) +
  scale_color_viridis_d(option = "magma") +
  labs(title = "magma")

p3 <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point(size = 3) +
  scale_color_viridis_d(option = "inferno") +
  labs(title = "inferno")

p4 <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point(size = 3) +
  scale_color_viridis_d(option = "plasma") +
  labs(title = "plasma")

# Para mostrar los cuatro gráficos juntos, necesitamos el paquete patchwork
# install.packages("patchwork")
library(patchwork)
p1 + p2 + p3 + p4 + plot_layout(ncol = 2)

Paletas personalizadas

Podemos crear nuestras propias paletas de colores para mantener la identidad visual de nuestra organización:

# Definir una paleta personalizada
mis_colores <- c("#1A535C", "#4ECDC4", "#F7FFF7", "#FF6B6B", "#FFE66D")

# Aplicar a un gráfico
ggplot(mpg, aes(x = class, fill = class)) +
  geom_bar() +
  scale_fill_manual(values = mis_colores) +
  theme_minimal() +
  labs(title = "Distribución de tipos de vehículos",
       subtitle = "Usando paleta personalizada")

Para datos continuos, podemos crear gradientes personalizados:

# Gradiente personalizado
ggplot(faithfuld, aes(x = waiting, y = eruptions, fill = density)) +
  geom_tile() +
  scale_fill_gradientn(
    colors = c("#2C3E50", "#E74C3C", "#F1C40F", "#ECF0F1"),
    values = c(0, 0.3, 0.7, 1)
  ) +
  theme_minimal() +
  labs(title = "Densidad de erupciones del géiser Old Faithful",
       subtitle = "Usando gradiente personalizado")

Exportación de gráficos de alta calidad

Una vez creado un gráfico profesional, es importante exportarlo con la calidad adecuada para su uso final.

Exportación básica con ggsave()

La función ggsave() es la forma más sencilla de guardar gráficos:

# Crear un gráfico
p <- ggplot(mpg, aes(x = displ, y = hwy, color = class)) +
  geom_point(size = 2) +
  labs(title = "Relación entre cilindrada y consumo en autopista",
       x = "Cilindrada (litros)",
       y = "Consumo en autopista (mpg)",
       color = "Tipo de vehículo") +
  theme_minimal()

# Guardar el gráfico
ggsave(
  filename = "mi_grafico.png",
  plot = p,
  width = 8,
  height = 6,
  dpi = 300,
  units = "in"
)

Formatos de archivo

Cada formato tiene ventajas y desventajas:

  • PNG: Ideal para web y presentaciones. Buena calidad con tamaño de archivo razonable.
ggsave("grafico_web.png", p, width = 8, height = 6, dpi = 150)
  • JPEG: Tamaño de archivo más pequeño, pero con pérdida de calidad. Útil cuando el tamaño es crítico.
ggsave("grafico_comprimido.jpg", p, width = 8, height = 6, dpi = 300, quality = 90)
  • TIFF: Alta calidad sin pérdida, ideal para publicaciones científicas.
ggsave("grafico_publicacion.tiff", p, width = 8, height = 6, dpi = 600)
  • PDF: Formato vectorial ideal para documentos y publicaciones. Mantiene la calidad al redimensionar.
ggsave("grafico_vectorial.pdf", p, width = 8, height = 6)
  • SVG: Formato vectorial para web, ideal para sitios interactivos.
ggsave("grafico_web_vectorial.svg", p, width = 8, height = 6)

Ajuste de resolución y tamaño

La resolución adecuada depende del uso final:

# Para pantalla/web (72-150 dpi)
ggsave("grafico_web.png", p, width = 8, height = 6, dpi = 120)

# Para impresión estándar (300 dpi)
ggsave("grafico_impresion.png", p, width = 8, height = 6, dpi = 300)

# Para publicación científica (600+ dpi)
ggsave("grafico_publicacion.tiff", p, width = 8, height = 6, dpi = 600)

Exportación avanzada con dispositivos gráficos

Para un control más preciso, podemos usar dispositivos gráficos directamente:

# Abrir un dispositivo PDF
pdf(
  file = "grafico_avanzado.pdf",
  width = 8,
  height = 6,
  pointsize = 12,
  family = "Helvetica"
)

# Dibujar el gráfico
print(p)

# Cerrar el dispositivo
dev.off()

Para formatos de mapa de bits:

# Dispositivo PNG con alta resolución
png(
  filename = "grafico_hd.png",
  width = 8 * 300,  # ancho en píxeles (8 pulgadas * 300 dpi)
  height = 6 * 300, # alto en píxeles
  res = 300,        # resolución en dpi
  bg = "white"      # fondo blanco
)

print(p)
dev.off()

Exportación para publicaciones científicas

Para publicaciones académicas, es importante seguir los requisitos específicos de la revista:

# Configuración típica para una revista científica
tiff(
  filename = "figura_publicacion.tiff",
  width = 174,      # ancho en mm
  height = 130,     # alto en mm
  units = "mm",
  res = 600,        # alta resolución
  compression = "lzw"  # compresión sin pérdida
)

print(p)
dev.off()

Ajustes finales antes de exportar

Antes de exportar, es recomendable hacer algunos ajustes finales:

# Versión final para exportación
p_final <- p +
  # Aumentar tamaño de texto para mejor legibilidad
  theme(
    plot.title = element_text(size = 14, face = "bold"),
    axis.title = element_text(size = 12),
    axis.text = element_text(size = 10),
    legend.title = element_text(size = 12),
    legend.text = element_text(size = 10)
  ) +
  # Asegurar que la leyenda no ocupe demasiado espacio
  guides(color = guide_legend(override.aes = list(size = 4)))

# Exportar versión final
ggsave("grafico_final.pdf", p_final, width = 8, height = 6)

Exportación de múltiples gráficos

Para exportar varios gráficos en un solo archivo, podemos usar patchwork:

library(patchwork)

p1 <- ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point() +
  labs(title = "Gráfico 1")

p2 <- ggplot(mpg, aes(x = class, fill = class)) +
  geom_bar() +
  labs(title = "Gráfico 2")

p3 <- ggplot(mpg, aes(x = cty, y = hwy)) +
  geom_point() +
  geom_smooth(method = "lm") +
  labs(title = "Gráfico 3")

# Combinar gráficos
composicion <- (p1 + p2) / p3

# Exportar composición
ggsave("panel_graficos.pdf", composicion, width = 10, height = 8)

La combinación de paletas de colores adecuadas y técnicas de exportación de alta calidad nos permite crear visualizaciones profesionales que comunican eficazmente nuestros datos. Estas habilidades son fundamentales para cualquier analista de datos que quiera presentar sus resultados de manera impactante y profesional.

Aprende R online

Otros ejercicios de programación de R

Evalúa tus conocimientos de esta lección Personalización y temas con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de R

Accede a todas las lecciones de R y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Instalación De R Y Rstudio

R

Introducción Y Entorno

Introducción A R

R

Introducción Y Entorno

Operadores

R

Sintaxis

Estructuras De Datos

R

Sintaxis

Funciones

R

Sintaxis

Estructuras De Control Iterativo

R

Sintaxis

Scopes Y Closures

R

Sintaxis

Estructuras De Control Condicional

R

Sintaxis

Funciones Anónimas

R

Sintaxis

Tipos De Datos Y Variables

R

Sintaxis

Sistema R6: Clases Referenciales Y Encapsulamiento

R

Programación Orientada A Objetos

Sistema S4: Clases Formales Y Validación

R

Programación Orientada A Objetos

Herencia Y Polimorfismo En R

R

Programación Orientada A Objetos

Sistemas De Oop En R

R

Programación Orientada A Objetos

Sistema S3: Clases Implícitas Y Métodos Genéricos

R

Programación Orientada A Objetos

Tidyverse Para Transformación De Datos

R

Manipulación De Datos

Lubridate Para Fechas Y Tiempo

R

Manipulación De Datos

Group_by Y Summarize Para Agrupación Y Resumen

R

Manipulación De Datos

Stringr Para Expresiones Regulares

R

Manipulación De Datos

Tidyr Para Limpieza De Valores Faltantes

R

Manipulación De Datos

Joins En R Para Combinación Y Relaciones De Tablas

R

Manipulación De Datos

Pivot_longer Y Pivot_wider Para Reestructuración

R

Manipulación De Datos

Mutate Y Transmute Para Transformación

R

Manipulación De Datos

Dplyr Para Filtrado Y Selección

R

Manipulación De Datos

Readr Y Read.csv Para Importar Datos

R

Manipulación De Datos

Gráficos Bivariantes En R

R

Visualización De Datos

Gráficos Univariantes En R

R

Visualización De Datos

Facetas En Ggplot2

R

Visualización De Datos

Personalización Y Temas

R

Visualización De Datos

Ggplot2 Para Visualización De Datos

R

Visualización De Datos

Gráficos Multivariantes En R

R

Visualización De Datos

Correlación En R

R

Estadística

Regresión Lineal En R

R

Estadística

Pruebas De Hipótesis En R

R

Estadística

Anova En R

R

Estadística

Estadística Descriptiva En R

R

Estadística

Accede GRATIS a R y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender cómo personalizar títulos, ejes y leyendas en gráficos con ggplot2.
  • Aprender a aplicar y modificar temas predefinidos y crear temas personalizados.
  • Conocer las diferentes paletas de colores disponibles y cómo aplicarlas según el tipo de datos.
  • Saber exportar gráficos con alta calidad en distintos formatos y resoluciones.
  • Integrar múltiples técnicas de personalización para mejorar la presentación y claridad de las visualizaciones.