Personalizar los ejes en R

Vamos a utilizar los datos del siguiente bloque de código en los ejemplos de esta guía.

# Datos reproducibles
set.seed(1)
x <- runif(100, min = -5, max = 5)
y <- x ^ 3 + rnorm(100, mean = 0, sd = 5)

Etiquetas de los ejes

Las etiquetas por defecto de los ejes dependerán de la función que estés usando, por ejemplo, la función plot mostrará los nombres de las variables de entrada, boxplot no mostrará etiquetas en los ejes por defecto e hist mostrará el nombre de la variable del eje X y “Frequency” o “Density” en el eje Y, dependiendo del tipo de histograma.

Gráfico por defecto

Para ilustrar los conceptos vamos a usar la función plot, pero los ejemplos son extendibles a otras funciones. Para crear un gráfico de los datos que definimos antes puedes escribir:

plot(x, y, pch = 19)

Gráfico con ejes por defecto

Etiquetas personalizadas de los ejes

Para cambiar las etiquetas de los ejes puedes especificar los argumentos xlab e ylab de la siguiente manera:

plot(x, y, pch = 19,
     xlab = "Etiqueta eje X",
     ylab = "Etiqueta eje Y")

Agregar etiquetas de los ejes en R

Color de las etiquetas

Además, es posible modificar el color de las etiquetas de los ejes con el argumento col.lab.

plot(x, y, pch = 19,
     xlab = "Etiqueta eje X",
     ylab = "Etiqueta eje Y",
     col.lab = 4) # Color de las etiquetas

Color de las etiquetas de los ejes en R

Eliminar las etiquetas de los ejes

Puedes eliminar las etiquetas de los ejes mediante dos métodos diferentes.

Eliminar las etiquetas en R

Opción 1. Establece los argumentos xlab e ylab a "", NA o NULL.

# Eliminar las etiquetas
plot(x, y, pch = 19,
     xlab = "", # También NA o NULL
     ylab = "") # También NA o NULL

Elimina las etiquetas de los ejes con el argumento ann en R

Opción 2. Establece el argumento ann a FALSE. Esto sobrescribirá las etiquetas si se proporcionan.

# Equivalente
plot(x, y, pch = 19,
     xlab = "Etiqueta eje X",
     ylab = "Etiqueta eje Y",
     ann = FALSE)

La función axis

La función axis permite añadir ejes a todos los lados del gráfico actual, con la posibilidad de especificar la posición y las etiquetas de las marcas de los ejes. Recuerda escribir ?axis para obtener detalles adicionales.

axis Posición
1 abajo
2 izquierda
3 arriba
4 derecha

Opción 1. Establece xaxt = "n" y yaxt = "n" para eliminar las marcas de los ejes del gráfico y agrega las nuevas etiquetas con la función axis. Ten en cuenta que el argumento at establece donde mostrar las marcas de los ejes.

plot(x, y, pch = 19,
     xaxt = "n", yaxt = "n")

# Eje X
axis(1, at = c(-4, 0, 4))

# Eje Y
axis(2, at = c(-100, -50, 0, 50, 100))

Agrega ejes en R con la función axis

Opción 2. Establece axes = FALSE dentro de tu función gráfica para eliminar la caja del gráfico y añadir nuevos ejes con la función axis.

plot(x, y, pch = 19,
     axes = FALSE)

# Añadir eje X
axis(1)

# Añadir eje Y
axis(2)

# Puedes agregar la caja de nuevo
# box()

Añadir ejes a un gráfico de R

Color de los ejes

También puedes personalizar el color de los ejes y las marcas de los ejes con los argumentos col y col.ticks.

plot(x, y, pch = 19,
     axes = FALSE)

# Añadir eje X
axis(1,
     col = "blue",        # Color línea ejes
     col.ticks = "green", # Color marcas ejes
     col.axis = "red")    # Color de las etiquetas

# Añadir eje Y
axis(2,
     col = "blue",
     col.ticks = "green",
     col.axis = "red")

Personalización del color de los ejes y de las marcas de los ejes en R

Marcas de los ejes

Además de las etiquetas de los ejes, es posible personalizar las marcas de los ejes de diferentes maneras.

Los argumentos xaxp e yaxp

Personalizar la posición de las marcas de los ejes en R

Los argumentos xaxp (eje X) e yaxp (eje Y) permiten personalizar donde empiezan y acaban la marcas de cada eje y el número de regiones en las que dividir los ejes con vectores de la forma c(inicio, final, numero_regiones).

plot(x, y, pch = 19,
     xaxp = c(-3, 3, 3),
     yaxp = c(-70, 70, 5))

Marcas menores (función minor.tick)

Función minor.tick en R

Es posible agregar marcas menores a los ejes con la función minor.tick de la librería Hmisc. La función permite especificar la densidad de las marcas secundarias, su tamaño y otros argumentos adicionales para cada eje.

# install.packages("Hmisc")
library(Hmisc)

plot(x, y, pch = 19)
minor.tick(nx = 2, ny = 2,   # Densidad de las marcas
           tick.ratio = 0.5) # Tamaño de las marcas

Marcas interiores

Puedes establecer marcas interiores pasando valores positivos al argumento tck. Cuanto mayor sea el valor, mayores serán las marcas. El valor por defecto es tck = -0.5.

# Marcas interiores
plot(x, y, pch = 19,
     tck = 0.02)

Marcas interiores de los ejes en R

Rotar las etiquetas de las marcas de los ejes

Es posible rotar las etiquetas de las marcas de los ejes de varias formas haciendo uso del argumento las.

Rotar las etiquetas de las marcas de los ejes con el argumento las

Opción 1. Paralelas al eje (por defecto).

plot(x, y, pch = 19,
     las = 0,
     main = "Paralelas")

Marcas de los ejes horizontales

Opción 2. Horizontal.

plot(x, y, pch = 19,
     las = 1,
     main = "Horizontal")

Etiquetas de las marcas de los ejes perpendicualres en R

Opción 3. Perpendiculares al eje.

plot(x, y, pch = 19,
     las = 2,
     main = "Perpendicular")

Etiquetas de las marcas de los ejes verticales con el argumento las

Opción 4. Vertical.

plot(x, y, pch = 19,
     las = 3,
     main = "Vertical")

Cambiar las etiquetas de las marcas de los ejes

El argumento labels de la función axis permite personalizar las etiquetas de las marcas de los ejes.

# Cambiar las etiquetas de las marcas del eje X
plot(x, y, pch = 19, xaxt = "n")
axis(1, at = seq(round(min(x)),
                 round(max(x)), by = 1),
     labels = 1:11)

Especificar etiquetas de las marcas de los ejes personalizadas en R

Ten en cuenta que puedes establecer textos además de números u otras expresiones.

# Marcas de los ejes con texto
plot(x, y, pch = 19, xaxt = "n")
axis(1, at = c(-2, 2),
     labels = c("Texto", "Otro texto"))

Agregar texto a las marcas de los ejes en R

Eliminar marcas de los ejes

Puedes eliminar las marcas de uno o de ambos ejes al mismo tiempo estableciendo los argumentos xaxt e yaxt a "".

Eliminar marcas de los ejes en R

Opción 1. Eliminar solo las marcas del eje X.

# Eliminar las marcas del eje X
plot(x, y, pch = 19,
     xaxt = "n",
     main = "xaxt = 'n'")

Eliminar las marcas del eje Y en R

Opción 2. Eliminar solo las marcas del eje Y.

# Eliminar las marcas del eje Y
plot(x, y, pch = 19,
     yaxt = "n",
     main = "yaxt = 'n'")

Eliminar todas la marcas de los ejes en R

Opción 3. Eliminar las etiquetas de ambos ejes.

# Eliminar las marcas de los ejes
plot(x, y, pch = 19,
     yaxt = "n",
     xaxt = "n",
     main = "xaxt = 'n', yaxt = 'n'")

Eliminar la caja y los ejes de un gráfico en R

Opción 4. Borra ambos ejes y la caja del gráfico.

# Elimina los ejes y la caja
plot(x, y, pch = 19,
     axes = FALSE,
     main = "axes = FALSE")

Límites de los ejes

Los límites de los ejes se pueden modificar con los argumentos xlim e ylim para los ejes X e Y, respectivamente.

# Límites de los ejes
plot(x, y, pch = 19,
     xlim = c(0, 4),   # Límites eje X
     ylim = c(0, 100)) # Límites eje Y

Límites de los ejes en R con los argumentos xlim e ylim

Escala de los ejes

Escala de los ejes en R

Datos originales.

# Datos positivos
w <- x[x > 0]
z <- y[y > 0]

# Default
plot(w, z,
     main = "Sin transformar")

Eje X en escala logarítimica en R

Eje X transformado.

# Escala logarítimica. Eje X
plot(w, z,
     log = "x", 
     main = "Eje X transformado")

Eje Y en escala logarítmica en R

Eje Y transformado.

# Escala logarítimica. Eje Y
plot(w, z,
     log = "y",   
     main = "Eje Y transformado")

Ejes X e Y en escala logarítmica en R

Ambos transformados.

# Escala logarítimica. Ejes X e Y
plot(w, z,
     log = "xy", 
     main = "Ambos transformados")

Eje dual

Puedes unir dos gráficos con diferente escala del eje Y incrementando los márgenes del gráfico, usando par(new = TRUE), creando un nuevo gráfico sin ejes o etiquetas y estableciendo un nuevo eje con la función axis.

# Incrementar los márgenes del gráfico
par(mar = c(5, 4, 4, 4) + 0.25)

# Datos
plot(x, y, pch = 19, ylab = "Var 1")

# Necesario para unir los gráficos
par(new = TRUE)

# Más datos
plot(x ^ 2, y ^ 2,
     col = 4, pch = 19,
     axes = FALSE, # No axes
     bty = "n",    # No box
     xlab = "", ylab = "") # No axis labels

# Nuevo eje
axis(4)
# Etiqueta del eje
mtext("Var 2", side = 4, line = 3, col = 4)

Gráfico con eje dual en R

ggplot2

Elegant Graphics for Data Analysis

Comprar en Amazon
Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar