Inicio » Gráficos » Plot en R

Plot en R

Crea gráficos con la función plot en R

La función gráfica más básica en R es la función plot. Esta función tiene múltiples argumentos para configurar el gráfico finalamaño de la fuente: agregar un título, cambiar etiquetas de los ejes, personalizar colores, cambiar tipos de línea, etc. En este tutorial aprenderás cómo hacer un plot en R y cómo personalizar totalmente el gráfico resultante.

Función plot en R

La función plot en R permite crear un gráfico pasando dos vectores (de la misma longitud), un data frame, una matriz o incluso otros objetos, dependiendo de su clase o tipo de los datos de entrada. A continuación simulamos dos variables normales aleatorias llamadas x e y , que usaremos en gran parte de los ejemplos.

set.seed(1)

# Generamos datos de ejemplo
x <- rnorm(500)
y <- x + rnorm(500)

Puedes dibujar los datos creados escribiendo:

# Dibujamos los datos
plot(x, y)

# Equivalente
M <- cbind(x, y)
plot(M)
Crear plot en R base

Con la función plot se puede crear una amplia gama de gráficos, dependiendo de los argumentos de entrada. En la siguiente tabla resumimos todas las posibilidades disponibles para la función plot de R base.

Función y argumentosGráfico de salida
plot(x, y) Diagrama de dispersión de
los vectores numéricos x e y
plot(factor) Gráfico de barras del factor
plot(factor, y) Diagrama de caja del vector
numérico y los niveles del factor
plot(serie_temporal)Gráfico de una serie de tiempo
(clase ts)
plot(data_frame) Gráfico de correlación
de todas las columnas
del data frame (más de dos columnas)
plot(fecha, y) Traza un vector basado en fechas
plot(función, inferior, superior) Traza la función entre el valor
inferior y máximo especificado

Si ejecutas el siguiente código, obtendrás ejemplos de los diferentes tipos de gráfico.

# Ejemplos

par(mfrow = c(2, 3))

# Datos
mi_ts <- ts(matrix(rnorm(500), nrow = 500, ncol = 1),
              start = c(1950, 1), frequency = 12)

mis_fechas <- seq(as.Date("2005/1/1"), by = "month", length = 50)

mi_factor <- factor(mtcars$cyl)

fun <- function(x) x^2

# Diagrama de dispersión
plot(x, y, main = "Gráfico de dispersión")

# Gráfico de barras
plot(mi_factor, main = "Diagrama de barras")

# Diagrama de cajas
plot(mi_factor, rnorm(32), main = "Diagrama de cajas y bigotes")

# Gráfico de una serie temporal
plot(mi_ts, main = "Serie temporal")

# Time-based plot
plot(mis_fechas, rnorm(50), main = "Gráfico basado en fechas")

# Dibujar una función
plot(fun, 0, 10, main = "Trazar una función")

# Gráfico de correlación
plot(trees[, 1:3], main = "Matriz de correlación")

par(mfrow = c(1, 1))
Ejemplos de gráficos que se pueden crear con la función plot
Matriz de correlación en R con la función plot
Cuando creas varios gráficos en R base (no en RStudio), el siguiente gráfico borrará el anterior . Sin embargo, puedes crear nuevas ventanas gráficas con las funciones windows, X11 y quartz según tu sistema operativo, para resolver este problema.

Ventanas gráficas

Al crear gráficos en R base, se abrirán en una nueva ventana. Sin embargo, es posible que necesites personalizar la altura y el ancho de la ventana, que por defecto es de 7 pulgadas. Para ese propósito, puedes utilizar los argumentos heigth y width de las siguientes funciones, dependiendo de tu sistema operativo.

Cabe destacar que en RStudio el gráfico se mostrará en el panel de gráficos, pero si utilizas la función correspondiente, el gráfico se abrirá en una nueva ventana, al igual que en R base.

windows() # Windows
X11()     # Unix
quartz()  # Mac

Además de poder abrir y establecer el tamaño de la ventana, estas funciones se usan para evitar sobrescribir gráficos, ya que al crear uno nuevo perderás el anterior. Ten en cuenta que en RStudio puedes navegar por todas los gráficos que hayas creado en tu sesión en el panel de gráficos

# Este gráfico se 
# abrirá en una ventana nueva
plot(x, y)

# Nueva ventana
windows()

# Otro gráfico en la nueva ventana
plot(x, x)

También puedes limpiar la ventana gráfica en R con la función dev.off, para borrar la ventana actual y graphics.off para borrar todas las gráficas y restablecer la configuración gráfica predeterminada.

# Borrar el plot actual
dev.off()

# Borrar todos los gráficos
graphics.off()
while (dev.cur() > 1) dev.off() # Equivalente

Nótese que la función dev.cur cuenta el número de dispositivos gráficos disponibles actualmente.

Tipos de plot en R

Puedes personalizar el tipo de gráfico con el argumento type. La selección del tipo dependerá de los datos que estés representando. En el siguiente bloque de código mostramos los tipos de gráficos más comunes que se pueden crear con la función plot en R.

j <- 1:20
k <- j

par(mfrow = c(1, 3))

plot(j, k, type = "l", main = "type = 'l'")
plot(j, k, type = "s", main = "type = 's'")
plot(j, k, type = "p", main = "type = 'p'")

par(mfrow = c(1, 1))

par(mfrow = c(1, 3))

plot(j, k, type = "l", main = "type = 'l'")
plot(j, k, type = "s", main = "type = 's'")
plot(j, k, type = "p", main = "type = 'p'")

par(mfrow = c(1, 1))
Tipos de plot en R con el argumento type de la función plot
Tipos de plot en R
Tipo de plotDescripción
p Gráfico de puntos
(por defecto)
lGráfico de líneas
bAmbos
(puntos y líneas, separados)
o Ambos
(líneas y por encima puntos)
s Gráfico de escaleras
hGráfico estilo histograma
nGráfico vacío

El argumento pch

El argumento pch permite modificar el símbolo de los puntos en el gráfico. Los símbolos principales se pueden seleccionar pasando los números 1 a 25 como parámetros. También puedes cambiar el tamaño de los símbolos con el argumento cex y el ancho de los bordes de los símbolos (excepto los símbolos 15 a 18) con el argumento lwd.

r <- c(sapply(seq(5, 25, 5), function(i) rep(i, 5)))
t <- rep(seq(25, 5, -5), 5)

plot(r, t, pch = 1:25, cex = 3, yaxt = "n", xaxt = "n",
     ann = FALSE, xlim = c(3, 27), lwd = 1:3)
text(r - 1.5, t, 1:25)
Símbolos pch en R

Además, los símbolos 21 a 25 permiten establecer el ancho del borde y también el color de fondo, con los argumentos lwd y bg, respectivamente.

plot(r, t, pch = 21:25, cex = 3, yaxt = "n", xaxt = "n", lwd = 3,
     ann = FALSE, xlim = c(3, 27), bg = 1:25, col = rainbow(25))
Cambiar colores a los símbolos pch en R

En el siguiente bloque de código mostramos un ejemplo simple de cómo personalizar uno de estos símbolos.

# Ejemplo

plot(x, y, pch = 21,
     bg = "red",   # Color de fondo
     col = "blue", # Color del borde
     cex = 3,      # Tamaño del símbolo
     lwd = 3)      # Ancho del borde
Gráfico en R con símbolos con colores personalizados

Cabe mencionar que puedes usar cualquier caracter como símbolo. De hecho, algunos símbolos de caracteres pueden seleccionarse usando los números 33 a 240 como valores del argumento pch.

# Símbolos personalizados
plot(1:5, 1:5, pch = c("☺", "❤", "✌", "❄", "✈"),
     col = c("orange", 2:5), cex = 3,
     xlim = c(0, 6), ylim = c(0, 6))
Símbolos pch personalizados en R

Título del plot en R

Se puede agregar un título a un plot en R con el argumento main o con la función title.

plot(x, y, main = "Mi título")

# Equivalente
plot(x, y)
title("Mi título")
Añadir título a un gráfico en R

La principal diferencia entre usar la función title o el argumento es que los argumentos que se pasan a la función solo afectan al título.

Para cambiar la posición del título del gráfico puedes establecer el argumento adj como un valor entre 0 (izquierda) y 1 (derecha) y el argumento line como un valor por encima de 1.7 (valor predeterminado) para mover el título hacia arriba o un valor por debajo de 1.7 para moverlo hacia abajo. Valores negativos de line hacen que el título se desplace hacia abajo, entrando dentro del gráfico. Nótese que si estableces estos argumentos en la función plot, los cambios se aplicarán a todos los textos.

plot(x, y)
title("Mi título",
      adj = 0.75,  # Título a la derecha
      line = 0.25)
Cambiar la posición del título de un gráfico en R

Título en LaTeX

Es muy común para los científicos de datos la necesidad de mostrar expresiones matemáticas en el título de los gráficos. Para ese propósito puedes usar la función expression. Puedes buscar todas las opciones disponibles para utilizar la notación matemática similar a LaTeX llamando con el siguiente comando de ayuda ?plotmath.

plot(x, y, main = expression(alpha[1] ^ 2 + frac(beta, 3)))
Añadir un título en LaTeX a un plot en R

Sin embargo, verás que la sintaxis de la función es bastante diferente de la sintaxis de LaTeX. Si lo prefieres, puedes usar la función TeX del paquete latex2exp, pero ten en cuenta que esta función traduce la notación TeX a la notación de función expression, por lo que los símbolos y la notación disponibles son los mismos en ambas funciones.

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

plot(x, y, main = TeX('$\\beta^3, \\beta \\in 1 \\ldots 10$'))
Añadir LaTeX a un gráfico en R con la función latex2exp
Las expresiones de LaTeX se pueden usar también en los subtítulos, las etiquetas de eje o cualquier otro texto, como textos agregados a la gráfica.

Subtítulo del gráfico

Además, puedes agregar un subtítulo a un plot en R con el argumento sub que se mostrará debajo del gráfico. También se puede agregar un subtítulo aunque no haya título principal.

plot(x, y, main = "Mi título", sub = "Mi subtítulo")

# Equivalente
plot(x, y)
title(main = "Mi título", sub = "Mi subtítulo")
Agregar subtítulo a un grafico de R

Ejes de los plots en R

En los gráficos de R puedes modificar las etiquetas de los ejes X e Y, agregar y cambiar las etiquetas de los ticks (marcas) de los ejes, la escala e incluso los límites de los ejes.

Etiquetas de los ejes X e Y

Por defecto, R usará los nombres de los vectores que pases a la función plot como etiquetas de los ejes X e Y. Sin embargo, puedes cambiarlos con los argumentos xlab e ylab.

plot(x, y, xlab = "Etiqueta del eje X", ylab = "Etiqueta del eje Y")
Cambiar las etiquetas de los ejes de un plot

Si quieres borrar las etiquetas de los ejes, puedes establecerlas como una cadena de caracteres vacía o establecer el argumento ann como FALSE.

# Eliminar las etiquetas de los ejes
plot(x, y, xlab = "", ylab = "")

# Equivalente
plot(x, y, xlab = "Etiqueta del eje X", ylab = "Etiqueta del eje Y", ann = FALSE)
Eliminar las etiquetas de los ejes de los gráficos en R

La función axis

El argumento axes de la función plot puede establecerse en FALSE para evitar dibujar los ejes, por lo que, en caso de que quieras, puedas agregar solo uno de ellos con la función axis y personalizarlo. Pasar un 1 como argumento dibujará el eje X, pasar un 2 dibujará el eje Y, pasar un 3 agregará el eje superior y un 4 el derecho.

plot(x, y, axes = FALSE)

# Añadir el eje X
axis(1)

# Añadir el eje Y
axis(2)
Añadir ejes a un plot con la función axis

Cambiar los ticks

También es posible cambiar los ticks de los ejes. Por una parte, el argumento at de la función axis permite indicar los puntos en los que se van a dibujar las etiquetas.

plot(x, y, axes = FALSE)
axis(1, at = -2:2)
Ticks de los ejes con la función axis y el argumento at

Por otra parte, la función minor.tick del paquete Hmisc permite crear ticks más pequeños entre los ticks principales:

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

plot(x, y)
minor.tick(nx = 3, ny = 3, tick.ratio = 0.5)
Añadir marcas en los ejes

Por último, pasar un número positivo al argumento tck de la función plot permite añadir ticks interiores.

# Ticks interiores
plot(x, y, tck = 0.02)
Añadir ticks interiores a un plot en R

Eliminar etiquetas de las marcas de los ejes

Estableciendo los argumentos xaxt o yaxt como "n" en la función plot evitará trazar las etiquetas de los ejes X e Y, respectivamente.

par(mfrow = c(1, 3))

# Eliminar las etiquetas de los ticks del eje X
plot(x, y, xaxt = "n", main = "xaxt = 'n'")

# Eliminar las etiquetas de los ticks del eje Y
plot(x, y, yaxt = "n", main = "yaxt = 'n'")

# Eliminar las etiquetas de los ticks de ambos ejes
plot(x, y, yaxt = "n", xaxt = "n", main = "xaxt = 'n', yaxt = 'n'")

par(mfrow = c(1, 1))
Eliminar marcas de los ejes en R

Cambiar las etiquetas de los ticks

Las etiquetas de los ticks de los ejes se numerarán para seguir la numeración de tus datos. Sin embargo, puedes modificar estas etiquetas si es necesario con el argumento labels de la función axis. También deberás especificar dónde se mostrarán las etiquetas de los ticks con el argumento at.

par(mfrow = c(1, 2))

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

# Cambiar las etiquetas de los ticks del eje Y
plot(x, y, yaxt = "n")
axis(2, at = seq(round(min(y)), round(max(y)), by = 1), labels = 1:9)
Cambiar etiquetas de las marcas de los ejes en R

Rotar las etiquetas de los ejes

El argumento las de la función plot en R te permite rotar las etiquetas de los ejes de tus gráficos. En el siguiente bloque de código encontrarás ejemplos y la explicación de las diferentes alternativas.

par(mfrow = c(2, 2))

plot(x, y, las = 0, main = "Paralelo")      # Paralelo a los ejes (por defecto)
plot(x, y, las = 1, main = "Horizontal")    # Horizontal
plot(x, y, las = 2, main = "Perpendicular") # Perpendicular a los ejes
plot(x, y, las = 3, main = "Vertical")      # Vertical

par(mfrow = c(1, 1))
Rotar las etiquetas de los ejes en R

Límites de los ejes

Puedes acercar o alejar el gráfico cambiando los límites de los ejes. Estos argumentos son muy útiles cuando agregas curvas a tu gráfico.

plot(x, y,
     ylim = c(-8, 8), # Eje Y desde -8 hasta 8
     xlim = c(-5, 5)) # Eje X desde -5 hasta 5
Cambiar límites de los ejes en R

Cambiar la escala de los ejes

El argumento log permite cambiar la escala de los ejes de un gráfico. Puedes transformar el eje X, el eje Y o ambos, de la siguiente manera:

# Nuevos datos para evitar números negativos
s <- 1:25
u <- 1:25

par(mfrow = c(2, 2))

# Por defecto
plot(s, u, pch = 19,
     main = "Sin transformar")

# Log x
plot(s, u, pch = 19, log = "x", 
     cex = 2, main = "Eje X transformado")

# Log y
plot(s, u, pch = 19, log = "y",
     cex = 2, main = "Eje Y transformado")

# Log xy
plot(s, u, pch = 19, log = "xy",
     cex = 2, main = "Ambos ejes transformados")
Escalas de los ejes en R

Sin embargo, puedes estar pensando que usar la función log es equivalente a usar el argumento, pero no lo es. Como puedes ver en el gráfico anterior, al usar el argumento log solo se modifica la escala, no lo datos, pero la función log sí los transforamará. Fíjate en la diferencia entre los ejes del siguiente gráfico y los del anterior.

par(mfrow = c(1, 3))

# Log-log
plot(log(s), log(u), pch = 19,      
     main = "log-log")
# log(x)
plot(log(s), u, pch = 19,
     main = "log(x)")
# log(y)
plot(s, log(u), pch = 19,
     main = "log(y)")

par(mfrow = c(1, 1))
Escala logarítmica en plots de R

Fuente de texto de un plot en R

Tamaño de la fuente

Puedes cambiar el tamaño de fuente de un gráfico de R con los argumentos cex.main, cex.sub, cex.lab y cex.axis para cambiar el título, los subtítulos, las etiquetas de los ejes X e Y y los ticks de los ejes, respectivamente. Valores mayores mostrarán textos más grandes.

plot(x, y, main = "Mi título", sub = "Mi subtítulo",
     cex.main = 2,   # Tamaño del título
     cex.sub = 1.5,  # Tamaño del subtítulo
     cex.lab = 3,    # Tamaño de las etiquetas de los ejes X e Y
     cex.axis = 0.5) # Tamaño de las etiquetas de los ticks de los ejes
Tamaño de la fuente de un gráfico en R
ArgumentoDescripción
cex.main Establece el tamaño del título
cex.subEstablece el tamaño del subtítulo
cex.labEstablece el tamaño de las
etiquetas de los ejes
cex.axisEstablece el tamaño de las etiquetas
de los ticks de los ejes

Estilo de las fuentes

Además, puedes cambiar el estilo de fuente de los gráficos de R con el argumento font. Puedes establecer este argumento en 1 para texto sin formato, 2 en negrita (predeterminado), 3 en cursiva y 4 en negrita y cursiva. Este argumento no aplica al título.

par(mfrow = c(1, 3))

plot(x, y, font = 2, main = "Negrita") # Negrita
plot(x, y, font = 3, main = "Cursiva") # Cursiva
plot(x, y, font = 4, main = "Negrita y cursiva") # Negrita y cursiva

par(mfrow = c(1, 1))
Cambiar estilos de fuente en gráficos de R

También puedes especificar el estilo de cada uno de los textos del gráfico con los argumentos font.main, font.sub, font.axis y font.lab.

plot(x, y,
     main = "Mi título",
     sub = "Subtítulo",
     font.main = 1, # Estilo de fuente del título
     font.sub  = 2, # Estilo de fuente del subtítulo
     font.axis = 3, # Estilo de fuente de los ejes X e Y
     font.lab  = 4) # Estilo de fuente de los ticks de los ejes
Fuentes para cada texto de un plot en R

Ten en cuenta que, de forma predeterminada, el título de los gráfico está en negrita.

Estilo de fuenteDescripción
1Texto plano
2Negrita
3Cursiva
4Negrita y cursiva

Familia de las fuentes

El argumento family permite cambiar la familia de las fuentes de los textos de los plots en R. Incluso puedes agregar más texto con otras familias de fuentes. Ten en cuenta que puedes ver la lista completa de fuentes disponibles en R con el comando names(pdfFonts()), pero algunas de ellas pueden no estar instaladas en tu ordenador.

# Fuentes
names(pdfFonts())

plot(x, y, family = "mono")
text(-2, 3, "Un texto", family = "sans")
text(-2, 2, "Más texto", family = "serif")
text(1, -4, "Otro texto", family = "HersheySymbol")

Una alternativa es usar el paquete extrafont:

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

# Autodetecta las fuentes disponibles en el ordenador
# Esto puede tardar varios minutos en ejecutarse
font_import()

# Nombres de las fuentes
fonts()

# Data frame con los nombres de las fuentes
fonttable()

Colorear plots en R

En la sección sobre símbolos pch explicamos cómo configurar el argumento col, que permite modificar el color de los símbolos de los gráficos. En R, hay una amplia variedad de paletas de colores. Con la función colors puedes devolver todos los colores base de R disponibles. Además, se puede usar la función grep (una función para expresiones regulares) para devolver un vector de colores que contenga algún texto concreto.

# Devolver todos los colores
colors()

# Devolver todos los colores que contengan 'green'
cl <- colors()
cl[grep("green", cl)]

# Gráfico con puntos azules
plot(x, y, col = "blue")
plot(x, y, col = 4) # Equivalente
plot(x, y, col = "#0000FF") # Equivalente
Cambiar color a un plot en R
Puedes especificar colores con su nombre en ingés ("red", "green", …), con números (1 a 8) o incluso con su referencia HEX ("#FF0000", "#0000FF", …).

También puedes modificar los colores de los textos con las funciones col.main, col.sub, col.lab y col.axis e incluso cambiar el color de la caja del gráfico con el argumento fg.

plot(x, y, main = "Título", sub = "Subtítulo",
    pch  = 16,
    col = "red",            # Color del símbolo
    col.main = "green",     # Color del título
    col.sub = "blue",       # Color del subtítulo
    col.lab = "sienna2",    # Color de las etiqetas de los ejes
    col.axis = "maroon4",   # Color de las etiquetas de los ticks
    fg = "orange")          # Color de la caja

Colorear según grupo

Si tienes variables numéricas etiquetadas por grupo, puedes dibujar las observaciones separadas por color, pasando al argumento col la variable categórica (como factor). Los colores dependerán de los factores.

# Creamos un data frame con grupos
grupo <- ifelse(x < 0 , "coche", ifelse(x > 1, "avión", "barco"))
df <- data.frame(x = x, y = y, grupo = factor(grupo))

# Color por grupo
plot(df$x, df$y, col = df$grupo, pch = 16)

# Cambiar los colores de los grupos
colores <- c("red", "green", "blue")
plot(df$x, df$y, col = colores[df$grupo], pch = 16)

# Cambiar el orden del color, cambiando el orden de los niveles
plot(df$x, df$y, pch = 16,
     col = colores[factor(grupo, levels = c("coche", "barco", "avión"))])
Colorear plot en R según grupo
Nótese que, por defecto, los niveles de los factores están ordenados alfabéticamente, por lo que en este caso el orden del vector de colores no es el orden de los colores en el gráfico, ya que la primera fila del data frame corresponde a “coche”, que es el tercer nivel. Por lo tanto, si cambias el orden de los niveles, puedes modificar el orden de los colores.
Desde R 4.0.0 el argumento stringAsFactors de la función data.frame es FALSE por defecto, por lo que deberás convertir la variable categórica a factor si quieres colorear las observaciones por grupo como en el ejemplo anterior.

Cambiar el color de fondo

Hay dos formas de cambiar el color de fondo de los gráficos en R: cambiando todo el color o cambiando el color de fondo de la caja. Para cambiar todo el color puedes usar el siguiente comando:

# Color de fondo gris claro
par(bg = "#f7f7f7")

# Añadimos nuestro gráfico
plot(x, y, col = "blue", pch = 16)

# Volvemos al color original
par(bg = "white")
Cambiar el color de fondo a un gráfico

Sin embargo, el resultado quedará más bonito si solo se colorea la caja de un determinado color, aunque esto requiere más codigo. Nótese que la función plot.new permite crear un gráfico vacío en R y que par(new = TRUE) permite añadir un gráfico sobre otro.

# Creamos un plot vacío
plot.new()

# Coloreamos la caja
rect(par("usr")[1], par("usr")[3],
     par("usr")[2], par("usr")[4],
     col = "#f7f7f7") # Color

par(new = TRUE)

# Añadimos nuestro gráfico
plot(x, y, col = "blue", pch = 16)
Cambiar el color de fondo de la caja de un gráfico de R

Añadir líneas o curvas a un gráfico en R

Puedes agregar una línea a un diagrama en R con la función lines. Supón que quieres agregar una línea roja a una gráfica, desde (-4, -4) a (4, 4), para ello podrías escribir:

plot(x, y)
lines(-4:4, -4:4, lwd = 3, col = "red")
Añadir curvas o líneas un plot en R

Ancho de línea

El ancho de línea en R se puede cambiar con el argumento lwd. Valores más grandes trazarán una línea más ancha.

M <- matrix(1:36, ncol = 6)

matplot(M, type = c("l"), lty = 1, col = "black", lwd = 1:6)

# Solo para indicar los anchos de línea en el gráfico
j <- 0
invisible(sapply(seq(4, 40, by = 6),
                 function(i) {
                   j <<- j + 1
                   text(2, i, paste("lwd =", j))}))
Distintos anchos de línea de plots en R

Tipo de línea

Al trazar un gráfico de tipo “l”, “o”, “b”, “s”, o al agregar una nueva línea sobre un gráfico ya creado, puedes elegir entre diferentes tipos de línea en R, estableciendo el argumento lty de 0 a 6.

matplot(M, type = c("l"), lty = 1:6, col = "black", lwd = 3)

# Solo para indicar los tipos de líneas en el gráfico
j <- 0
invisible(sapply(seq(4, 40, by = 6),
                 function(i) {
                   j <<- j + 1
                   text(2, i, paste("lty =", x))}))
Tipos de línea en plots de R
TipoDescripción
0Sin línea
1Línea sólida (default)
2 Línea discontinua
3Línea punteada
4Línea discontinua con puntos
5Líneas largas discontinuas
6Línea discontinua con dos trazos

Añadir texto a un plot en R

Por un lado, la función mtext permite agregar texto a todos los lados del gráfico. Hay 12 combinaciones (3 en cada lado de la caja: alineadas a la izquierda, al centro y a la derecha). Solo necesitas cambiar los argumentos adj y side para obtener la combinación que necesites.

Por otro lado, la función text permite agregar texto o fórmulas dentro del gráfico en alguna posición configurando las coordenadas. En el siguiente bloque de código se muestran algunos ejemplos de ambas funciones.

plot(x, y, main = "Título principal", cex = 2, col = "blue")

#---------------
# Función mtext
#---------------

# Abajo centro
mtext("Texto abajo", side = 1)

# Izquierda centro
mtext("Texto izquierda", side = 2)

# Arriba centro
mtext("Texto arriba", side = 3)

# Derecha centro
mtext("Texto derecha", side = 4)


# Abajo izquierda
mtext("Texto abajo izquierda", side = 1, adj = 0)

# Arriba derecha
mtext("Texto arriba derecha", side = 3, adj = 1)


# Arriba, con separación
mtext("Texto arriba", side = 3, line = 2.5)

#--------------
# Función text
#--------------

# Texto en las coordenadas (-2, 2)
text(-2, 2, "Más texto")

# Fórmula en las coordenadas (3, -3)
text(3, -3, expression(frac(alpha[1], 4)))
Añadir texto a un gráfico de R con las funciones text y mtext

Etiquetar puntos en R

En esta sección, aprenderás a etiquetar observaciones en R. Para ello, puedes usar la función text, indicar las coordenadas y la etiqueta de los puntos de datos en el argumento labels. Con el argumento pos puedes establecer la posición de la etiqueta con respecto al punto, siendo 1 debajo, 2 a la izquierda, 3 arriba y 4 a la derecha.

attach(USJudgeRatings)

# Creamos el plot
plot(FAMI, INTG,
     main = "Familiaridad con la ley vs Integridad judicial",
     xlab = "Familiaridad", ylab = "Integridad",
     pch = 18, col = "blue")

# Asignamos las etiquetas
text(FAMI, INTG,
     labels = row.names(USJudgeRatings),
     cex = 0.6, pos = 4, col = "red")

detach(USJudgeRatings)
Etiquetar observaciones en R

También puedes etiquetar puntos de datos individuales si indexas los elementos de la función text de la siguiente manera:

attach(USJudgeRatings)

plot(FAMI, INTG,
     main = "Familiaridad con la ley vs Integridad judicial",
     xlab = "Familiaridad", ylab = "Integridad",
     pch = 18, col = "blue")

# Seleccionamos los índices de los elementos que queremos etiquetar
seleccionados <- c(10, 15, 20)

# Indexamos los elementos con el vector
text(FAMI[seleccionados], INTG[seleccionados],
     labels = row.names(USJudgeRatings)[seleccionados],
     cex = 0.6, pos = 4, col = "red")

detach(USJudgeRatings)
Etiquetar puntos de datos en gráficos de R

Cambiar el tipo de caja con el argumento bty

El argumento bty permite cambiar el tipo de caja de los gráficos de R. Hay diversas opciones, resumidas en la siguiente tabla:

Tipo de cajaDescripción
“o”Caja entera (por defecto)
“7”Arriba y derecha
“L”Izquierda y abajo
“U”Izquierda, abajo y derecha
“C”Arriba, izquierda y abajo
“n”Sin caja
La forma de los caracteres “7”, “L” y “U” representan la forma de los bordes que dibujan.
par(mfrow = c(2, 3))

plot(x, y, bty = "o", main = "Por defecto")
plot(x, y, bty = "7", main = "bty = '7'")
plot(x, y, bty = "L", main = "bty = 'L'")
plot(x, y, bty = "U", main = "bty = 'U'")
plot(x, y, bty = "C", main = "bty = 'C'")
plot(x, y, bty = "n", main = "bty = 'n'")

par(mfrow = c(1, 1))
Tipos de caja de gráficos en R

Ten en cuenta que en otros gráficos, como en el caso de los boxplots, deberás especificar el argumento bty dentro de la función par.

Añadir una leyenda a un plot en R

Por último, revisaremos cómo añadir una leyenda a un plot de R con la función legend. Puedes establecer las coordenadas en las que quieres agregar la leyenda o especificar "top", bottom, "topleft", "topright", "bottomleft" o "bottomright" . También puedes especificar muchos argumentos como en la función plot. Como ejemplo, puedes cambiar el argumento bty en la leyenda, o el color de fondo con el argumento bg, entre otros.

plot(x, y, pch = 19)
lines(-4:4, -4:4, lwd = 3, col = "red")
lines(-4:1, 0:5, lwd = 3, col = "green")

# Añadimos la leyenda
legend("bottomright", legend = c("rojo", "verde"),
       lwd = 3, col = c("red", "green"))
Agregar leyenda a un plot en R

Consulta el artículo específico sobre leyendas en R para aprender más sobre cómo añadir leyendas en los gráficos.