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)
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)
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")
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
Puedes eliminar las etiquetas de los ejes mediante dos métodos diferentes.
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
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)
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))
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()
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")
Además de las etiquetas de los ejes, es posible personalizar las marcas de los ejes de diferentes maneras.
xaxp
e yaxp
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))
minor.tick
)
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
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)
Es posible rotar las etiquetas de las marcas de los ejes de varias formas haciendo uso del argumento las
.
Opción 1. Paralelas al eje (por defecto).
plot(x, y, pch = 19,
las = 0,
main = "Paralelas")
Opción 2. Horizontal.
plot(x, y, pch = 19,
las = 1,
main = "Horizontal")
Opción 3. Perpendiculares al eje.
plot(x, y, pch = 19,
las = 2,
main = "Perpendicular")
Opción 4. Vertical.
plot(x, y, pch = 19,
las = 3,
main = "Vertical")
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)
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"))
Puedes eliminar las marcas de uno o de ambos ejes al mismo tiempo estableciendo los argumentos xaxt
e yaxt
a ""
.
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'")
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'")
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'")
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")
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
Datos originales.
# Datos positivos
w <- x[x > 0]
z <- y[y > 0]
# Default
plot(w, z,
main = "Sin transformar")
Eje X transformado.
# Escala logarítimica. Eje X
plot(w, z,
log = "x",
main = "Eje X transformado")
Eje Y transformado.
# Escala logarítimica. Eje Y
plot(w, z,
log = "y",
main = "Eje Y transformado")
Ambos transformados.
# Escala logarítimica. Ejes X e Y
plot(w, z,
log = "xy",
main = "Ambos transformados")
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)
También te puede interesar