Curso
El plot character o pch es el argumento estándar para definir el carácter que se dibuja en varias funciones de R.
Se puede añadir texto explicativo a un gráfico de varias formas: etiquetas de ejes, títulos, leyendas o texto directamente sobre el gráfico. Las funciones base de gráficos en R suelen crear etiquetas de ejes por defecto, aunque puedes cambiarlas con los argumentos xlab() para el eje X y ylab() para el eje Y.
Algunas funciones de gráficos base también generan títulos por defecto, pero, como ves aquí, puedes sustituirlos:
library(MASS)
par(mfrow = c(1, 2))
plot(density(geyser$waiting))
plot(density(geyser$waiting), main = "Estimated density: \n Old Faithful waiting times")

El gráfico de la izquierda usa el título por defecto devuelto por la función density, que nos indica que el gráfico se generó con esta función y sus opciones por defecto, además de mostrar la especificación en R de la variable cuya densidad representamos. En el gráfico de la derecha, hemos reemplazado ese título por defecto indicando el argumento opcional main. Fíjate en que, al incluir el carácter de salto de línea, barra invertida n, creamos un título de dos líneas dentro de esa cadena de texto.
text() Function
Al igual que las funciones de líneas y puntos, text es una función de gráficos de bajo nivel que permite añadir texto explicativo a un gráfico existente. Para ello, hay que indicar los valores x e y, las coordenadas donde debe aparecer el texto, y labels, un vector de caracteres con el texto que se añadirá.
text(x, y, adj)

Por defecto, el texto añadido se centra en los valores x indicados, pero el argumento opcional adj permite modificar la alineación.
El argumento adj de la función text() determina la posición horizontal del texto y puede tomar cualquier valor entre 0 (alineado a la izquierda) y 1 (alineado a la derecha). De hecho, puede tomar valores fuera de ese rango. Por ejemplo, un valor negativo hace que el texto empiece a la derecha de la posición x indicada. Del mismo modo, un valor mayor que 1 hace que el texto termine a la izquierda de la posición x.
library(MASS)
plot(UScereal$fibre)
text(5, 28, "<-- Outliers [left-justified text at (5, 28)]", adj = 0)
text(65, 23, "[Right-justified text at (65, 23)]", adj = 1, col = "red")
text(5, 28, "[Centered text (default) at (31, 18)]", col = "blue")

Tipos de letra, orientaciones y otras características del texto
A continuación verás algunas formas de cambiar la apariencia del texto añadido mediante argumentos opcionales de la función text. Por defecto, el texto se coloca en horizontal, pero esto se puede cambiar con el argumento srt, que indica el ángulo de orientación respecto al eje horizontal.
En el ejemplo, el texto en rojo se inclina hacia arriba al especificar srt con el valor positivo de 30 grados, mientras que el texto en verde se inclina hacia abajo con srt igual a -45.
También podemos definir el color con el argumento col, y el texto en rojo muestra que podemos cambiar el tamaño con el argumento cex. Con cex = 1.2 hacemos el texto un 20% más grande de lo normal.
Otra característica modificada en este ejemplo es la tipografía, establecida con el argumento font. El valor por defecto es font = 1 (normal), mientras que font = 2 indica negrita, font = 3 cursiva y font = 4 negrita y cursiva a la vez.
library(MASS)
plot(Boston$rad)
# "Inner city" con color y rotación ajustados
text(350, 24, adj = 1, "Inner city? -->", srt = 30, font = 2, cex = 1.2, col = "red")
# "Suburbs" con color y rotación ajustados
text(100, 15, "Suburbs? -->", srt = -45, font = 3, col = "green")
title("Text with varying orientations, fonts, sizes & colors")

Ajustar la posición, el tamaño y la tipografía del texto
En el siguiente ejemplo, vas a:
- Crear un gráfico de
MPG.cityfrente aHorsepowerdel data frameCars93, con los datos representados como círculos abiertos (elpchpor defecto). - Construir la variable
index3con la funciónwhich()para identificar las filas que contienen coches de 3 cilindros. - Usar la función
points()para superponer círculos sólidos,pch = 16, sobre todos los puntos que representan coches de 3 cilindros. - Usar la función
text()con la variableMakecomo antes para añadir etiquetas a la derecha de los coches de 3 cilindros, pero ahora usaradj = 0.2para desplazar las etiquetas más a la derecha, el argumentocexpara aumentar su tamaño un 20% y el argumentofontpara ponerlas en negrita cursiva.
# Dibuja MPG.city vs. Horsepower como círculos abiertos
plot(Cars93$Horsepower, Cars93$MPG.city)
# Crea index3, que apunta a los coches de 3 cilindros
index3 <- which(Cars93$Cylinders == 3)
# Destaca los coches de 3 cilindros como círculos sólidos
points(Cars93$Horsepower[index3],
Cars93$MPG.city[index3],
pch = 16)
# Añade los nombres de los coches, desplazados de los puntos, con texto más grande y en negrita cursiva
text(Cars93$Horsepower[index3],
Cars93$MPG.city[index3],
Cars93$Make[index3],
adj = -0.2, cex = 1.2, font = 4)
Al ejecutar el código anterior, se obtiene el siguiente resultado:

Para saber más sobre cómo añadir texto a los gráficos, consulta este vídeo de nuestro curso Data Visualization in R.
Este contenido está extraído del curso Data Visualization in R de Ronald Pearson en DataCamp.
