En graphics tenemos la función text y hoy nos vamos a divertir con esta función. Simplemente lo que hace es poner un texto en un gráfico. Lo más sencillo:
# Gráfico sin nada
plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE)
# Ponemos un texto en el centro
text(10, 10, "Ejemplo de uso de text")
En un gráfico sin nada escribimos; sólo indicamos la posición y el texto a escribir. Vamos añadiendo opciones:
# Gráfico sin nada
plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE)
# Ponemos un texto en el centro
text(10, 10, "Ejemplo de uso de text", srt = 45, col = 1, cex = 3,
vfont = c("sans serif", "plain"))
Ahora modificamos la inclinación del texto con srt, el color, el tamaño y con vfont la fuente. Podemos jugar con los colores del texto realizando un bucle for:
# Realizamos un bucle
for (i in 1:20) {
# Gráfico sin nada
plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE)
# Ponemos un texto en el centro
text(10, 10, "Ejemplo de uso de text", srt = 0, col = i, cex = 2)
Sys.sleep(0.1)
}
Y si recorremos un texto letra a letra, entonces podemos hacer:
texto = "Letra por letra"
for (i in 1:nchar(texto)) {
letra = substr(texto, i, i)
frase = substr(texto, 1, i)
# Gráfico sin nada
plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE)
text(11, 11, letra, srt = 0, col = i, cex = 5)
text(10, 8, frase, srt = 0, cex = 2)
Sys.sleep(0.1)
}
Estamos creando algo muy parecido a una animación… Continuamos:
for (i in 1:20) {
# Gráfico sin nada
plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE)
# Ponemos un texto en el centro
text(10, 10.5, "Algo parecido", srt = 0, col = i, cex = 3 * i / 20)
text(10, 9.5, "a una animación", srt = 0, col = i, cex = 3 * i / 20)
Sys.sleep(0.01)
}
Otra vuelta de tuerca al tema:
# Realizamos un bucle
for (i in 1:360) {
plot(rep(10, 10), rep(10, 10), ann = FALSE, type = "n", axes = FALSE)
text(10, 10.5, "Algo parecido", srt = -i, col = rainbow(360)[i], cex = 3 * i / 360)
text(10, 9.5, "a una animación", srt = i, col = rainbow(360)[i], cex = 3 * i / 360)
Sys.sleep(0.01)
}
Códigos divertidos y sin mucha complicación. En breve espero poder hacer verdaderos gráficos dinámicos e interactivos en R. Saludos.