La función grid en R

Existen tres formas principales de agregar un grid (cuadrícula o rejilla) a un gráfico en R base: usando las funciones grid, axis o abline.

Agregando cuadrículas con grid

La función grid está diseñada específicamente para añadir grids a gráficos ya creados. La función permite moficar el número de sectiones donde dividir cada eje con los argumentos nx y ny, e.g. nx = 2 creará una única línea vertical. También puedes modificar el color, ancho y tipo de línea con los argumentos col, lwd y lty, respectivamente.

Opción 1. Agregar un grid a los ejes X e Y.

# Datos
set.seed(132)
x <- rnorm(500)

plot(x, pch = 19, col = 4)
grid(nx = NULL, ny = NULL,
     lty = 2,      # Tipo de ínea
     col = "gray", # Color
     lwd = 2)      # Ancho de línea

Agregar un grid (cuadrícula) a un gráfico de R

Opción 2. Agregar un grid solo al eje Y.

# Datos
set.seed(132)
x <- rnorm(500)

plot(x, pch = 19, col = 4)
grid(nx = NA,
     ny = NULL,
     lty = 2, col = "gray", lwd = 2)

Agregar un grid horizontal a un gráfico de R base

Opción 3. Agregar un grid solo al eje X.

# Datos
set.seed(132)
x <- rnorm(500)

plot(x, pch = 19, col = 4)
grid(nx = NULL,
     ny = NA,
     lty = 2, col = "gray", lwd = 2)

Agregar un grid vertical a un gráfico de R

Opción 4. Personalizar el número de divisiones con los argumentos nx y ny.

# Datos
set.seed(132)
x <- rnorm(500)

plot(x, pch = 19, col = 4)
grid(nx = 2, # Eje X dividido en dos secciones
     ny = 3, # Eje Y dividido en tres secciones
     lty = 2, col = "gray", lwd = 2)

Personalizar el número de divisiones del grid en R

Grid debajo del gráfico

Puede que hayas notado que el grid se añade sobre el gráfico. En el caso de que quieras que el grid se agregue debajo del gráfico tienes que añadir el gráfico por encima.

Grid debajo del gráfico en R

Opción 1. Puedes usar plot.new() y par(new = TRUE). Sin embargo, el grid no encajará con las marcas de los ejes.

# Datos
set.seed(132)
x <- rnorm(500)

plot.new()

grid(nx = NULL, ny = NULL,
     lty = 2, col = "gray", lwd = 2)

par(new = TRUE)
plot(x, pch = 19, col = 4)

Agregar grid debajo del gráfico en R

Opción 2. En lugar de usar plot.new() puedes usar las función gráfica para crear el gráfico:

# Datos
set.seed(132)
x <- rnorm(500)

plot(x)

grid(nx = NULL, ny = NULL,
     lty = 2, col = "gray", lwd = 2)

par(new = TRUE)
plot(x, pch = 19, col = 4)

Histograma con grid horizontal en R base

Opción 3. Si la función gráfica que estás usando (como hist, boxplot o barplot) proporciona el argumento add, establece add = TRUE en lugar de par(new = TRUE).

# Datos
set.seed(132)
x <- rnorm(500)

hist(x)
grid(nx = NA, ny = NULL,
     lty = 1, col = "gray", lwd = 1)
hist(x, col = 4,
     add = TRUE)

Box plot con grid en R

Ten en cuenta que puedes cambiar el color de fondo y añadir un grid al mismo tiempo como sigue:

# Datos
set.seed(132)
x <- rnorm(500)

boxplot(x)

# Color de fondo gris
rect(par("usr")[1], par("usr")[3],
     par("usr")[2], par("usr")[4],
     col = "#ebebeb")

# Grid blanco
grid(nx = NULL, ny = NULL,
     col = "white", lwd = 2)

# Box plot
boxplot(x, col = 4, add = TRUE)

Si tu gráfico es un diagrama de dispersión puedes agregar los puntos de nuevo sobre el grid con la función points.

Agregando un grid con la función axis

La función axis permite personalizar los ejes de los gráficos. Sin embargo, si estableces tck = 1 las marcas de los ticks de los ejes crearán un grid.

# Datos
set.seed(132)
x <- rnorm(500)

plot(x, pch = 19, col = 4)

# Grid vertical
axis(1, tck = 1, lty = 2, col = "gray")

# Grid horizontal
axis(2, tck = 1, lty = 2, col = "gray")

# Grid debajo del gráfico
par(new = TRUE)
plot(x, pch = 19, col = 4)

# Caja del gráfico
box()

Añadiendo un grid en R con la función axis

Grid con la función abline

De manera similar a la función axis, abline permite añadir un grid en ciertos valores. El principal beneficio de usar este método es que no se dibuja sobre los ejes, por lo que no necesitas utilizar la función box para arreglarlo.

Añadir un grid en R con la función abline

# Datos
set.seed(132)
x <- rnorm(500)

plot(x)

# Grid vertical
abline(v = seq(0, 500, 100),
       lty = 2, col = "gray")

# Grid horizontal
abline(h = seq(-3, 3, 1),
       lty = 2, col = "gray")

# Grid debajo de los puntos
points(x, pch = 19, col = 4)

Alinear el grid a las marcas

Cuando los ticks del gráfico son diferentes a los ticks por defecto puedes alinearlos usando las funciones axis o abline en caso de que especificando los argumentos nx o ny de la función grid no los alineen.

# Datos
set.seed(132)
x <- rnorm(500)

plot(x,
     xaxp = c(100, 400, 10),
     yaxp = c(-2, 2, 5))

# Grid vertical  
axis(1,
     at = seq(100, 400, by = 20),
     tck = 1, lty = 2, col = "gray")

# Grid horizontal
axis(2,
     at = seq(-2, 2, by = 0.8),
     tck = 1, lty = 2, col = "gray")

# Caja del gráfico
box()

# Grid debajo de los puntos
points(x, pch = 19, col = 4)

Align grid to axis ticks en R

Lo mismo se puede conseguir haciendo uso de abline en lugar de axis.

Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon
ggplot2

Elegant Graphics for Data Analysis

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar