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 final, que permiten agregar un título, cambiar las 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)
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 argumentos | Grá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))
Cuando creas varios gráficos en R GUI (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 height
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))
Tipo de plot | Descripción |
---|---|
p |
Gráfico de puntos (por defecto) |
l | Gráfico de líneas |
b |
Ambos (puntos y líneas, separados) |
o |
Ambos (líneas y por encima puntos) |
s | Gráfico de escaleras |
h | Gráfico estilo histograma |
n | Grá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)
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))
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
Cabe mencionar que puedes usar cualquier carácter 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))
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")
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)
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 con el siguiente comando de ayuda: ?plotmath
.
plot(x, y, main = expression(alpha[1] ^ 2 + frac(beta, 3)))
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$'))
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")
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")
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)
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)
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)
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)
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)
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))
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)
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))
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 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")
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 transformará. 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))
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
Argumento | Descripción |
---|---|
cex.main | Establece el tamaño del título |
cex.sub | Establece el tamaño del subtítulo |
cex.lab |
Establece el tamaño de las etiquetas de los ejes |
cex.axis |
Establece 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))
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
Ten en cuenta que, de forma predeterminada, el título de los gráficos está en negrita.
Estilo de fuente | Descripción |
---|---|
1 | Texto plano |
2 | Negrita |
3 | Cursiva |
4 | Negrita 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
Puedes especificar colores con su nombre en inglé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"))])
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")
Sin embargo, el resultado quedará más bonito si solo se colorea la caja de un determinado color, aunque esto requiere más código. 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)
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")
Grosor de línea
El ancho o grosor 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))}))
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))}))
Tipo | Descripción |
---|---|
0 | Sin línea |
1 | Línea sólida (por defecto) |
2 | Línea discontinua |
3 | Línea punteada |
4 | Línea discontinua con puntos |
5 | Líneas largas discontinuas |
6 | Lí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)))
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)
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)
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 caja | Descripció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))
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"))
Consulta el artículo específico sobre leyendas en R para aprender más sobre cómo añadir leyendas en los gráficos.