Comprendiendo la función plot() en R – Fundamentos de trazado de gráficos

En este tutorial, comencemos primero por entender los conceptos básicos utilizando la función plot() en R. El lenguaje R es conocido por sus hermosos gráficos con un conjunto completo de funciones para construir y dar formato a cualquier tipo de gráficos, y la familia de funciones plot() es la que nos ayuda a construirlos.

La función plot() en R no es una función única definida, sino un marcador de posición para una familia de funciones relacionadas. La función exacta que se llama dependerá de los parámetros utilizados. En su forma más simple, la función plot() simplemente traza dos vectores entre sí.

plot(c(1,2,3,4,5),c(1,4,9,16,25))

Esto proporciona un gráfico simple para y = x^2.

Square plot in R

Cambiando la apariencia del gráfico con la función plot() en R

La función plot() en R se puede personalizar de varias maneras para crear gráficos más complejos y llamativos, como veremos.

  1. La forma de los marcadores: Los marcadores de los gráficos son, por defecto, círculos pequeños y vacíos. También se conocen como caracteres de trazado, indicados por pch. Puedes cambiarlos agregando un nuevo valor de pch en la función de trazado. Los valores de pch de 0 a 25 son válidos y dan varios símbolos diferentes en el gráfico. Pch 0 es para un cuadrado, 1 es para un círculo, 3 es para un triángulo, 4 es para una cruz, y así sucesivamente.
  2. Tamaño de los marcadores del gráfico: Este aspecto de un gráfico puede ser controlado usando el parámetro cex. El parámetro cex puede ser configurado a 0.5 si deseas que los marcadores sean un 50% más pequeños y a 1.5 si deseas que sean un 50% más grandes.
  3. Color de los marcadores del gráfico: Los símbolos pueden ser asignados uno o varios colores. Estos colores pueden ser seleccionados de una lista proporcionada por R bajo la función colors().
  4. Conexión de los puntos con líneas: Muchas veces, es necesario conectar los puntos mostrados con diferentes tipos de líneas. Esto puede ser hecho usando el atributo type de la función de gráfico. El atributo type establecido en ‘p’ se refiere solo a puntos y ‘l’ solo a una línea. De manera similar, los valores ‘b’ y ‘o’ son para líneas que conectan puntos y superponen puntos respectivamente. Para obtener una visualización similar a un histograma, se usa la opción ‘h’ y ‘s’ se usa para una opción de paso.
  5. Variando las líneas: El tipo de línea puede ser especificado por el parámetro lty (rango de 0 a 6) y el ancho de línea se establece usando un parámetro lwd.

Ahora intentemos construir algunos gráficos con lo que aprendimos hasta ahora.

Comenzaremos generando un gráfico de onda seno. Sea x un vector de secuencia de valores desde -pi hasta pi con intervalos de 0.1 y y contiene los valores seno respectivos de x. Ahora intenta graficar y contra x.

x=seq(-pi,pi,0.1)
y=sin(x)
plot(x,y)
Sine wave

Ahora intentemos cambiar los símbolos y colores.

plot(x,y,pch=c(4,5,6),col=c('red','blue','violet','green'))

Ahora estamos permitiendo al compilador seleccionar entre 3 símbolos diferentes y 4 colores diferentes para marcar el gráfico. Veamos cómo resultó.

Colorful Sinewave

R also allows combining multiple graphs into a single image for our viewing convenience using the par() function. We only need to set the space before calling the plot function in our graph.

#Establecer una ventana de trazado con una fila y dos columnas.
par(mfrow=c(1,2))
plot(x,y,type='l')
plot(x,y,pch=c(4,5,6),col=c('red','blue','violet','green'))
Combining Plots In R

A few more graphs using various options from above are illustrated below.

#Establecer espacio para 2 filas y 3 columnas.
par(mfrow=c(2,3))

#Graficar los gráficos usando varias opciones.
plot(x,cos(x),col=c('blue','orange'),type='o',pch=19,lwd=2,cex=1.5)

plot(x,x*2,col='red',type='l')

plot(x,x^2/3+4.2, col='violet',type='o',lwd=2,lty=1)

plot(c(1,3,5,7,9,11),c(2,7,5,10,8,10),type='o',lty=3,col='pink',lwd=4)

plot(x<-seq(1,10,0.5),50*x/(x+2),col=c('green','dark green'),type='h')

plot(x,log(x),col='orange',type='s')

El gráfico resultante se ve así.

Multiple Plots In R

Añadiendo Más Información a los Gráficos con la Función plot() en R

Los gráficos lucen más completos cuando tienen notas e información que los expliquen. Esto incluye un título para el gráfico y los ejes, una leyenda del gráfico. A veces incluso será necesario etiquetar los puntos de datos. Veamos cómo agregar estos elementos a los gráficos en R.

  1. El título principal se añade usando la opción main en la función plot. La fuente, color y tamaño se pueden personalizar utilizando font.main, col.main y cex.main respectivamente.
  2. Los títulos de los ejes se proporcionan usando atributos xlab e ylab. Estos se pueden personalizar utilizando font.lab, col.lab y cex.lab como se mencionó anteriormente.
  3. También puedes agregar texto adicional dentro del gráfico utilizando el atributo text, especificando el texto a usar y las coordenadas para mostrarlo.
  4. El atributo de texto también se puede utilizar para etiquetar los puntos de datos. El texto, en este caso, es un vector de etiquetas en lugar de una cadena de caracteres.
  5. La leyenda se puede agregar a un gráfico utilizando la función legend() de R. La función Legend toma como entrada las coordenadas, el texto y los símbolos a interpretar.

Veamos ejemplos que ilustren esto.

#Mostrando el título con color
plot(c(1,3,5,7,9,11),c(2,7,5,10,8,10),type='o',lty=3, col='pink',lwd=4,main="This is a graph",col.main='blue')
Graph With A Title
#Mismo gráfico con xlabel e ylabel añadidos.

> plot(c(1,3,5,7,9,11),c(2,7,5,10,8,10),type='o',lt=3,col='pink',lwd=4,main="This is a graph",col.main='blue',xlab="Time",ylab="Performance")
Graph With Title And Labels

Agreguemos una etiqueta a cada uno de los puntos de datos en el gráfico utilizando un atributo de texto.

labelset <-c('one','three','five','seven','nine','eleven')
x1<- c(1,3,5,7,9,11)
y1 <- c(2,7,5,10,8,10)
plot(x1,y1,type='o',lty=3,col='pink',lwd=4,main="This is a graph",col.main='blue',xlab="Time",ylab="Performance")
text(x1+0.5,y1,labelset,col='red')
Graph With Data Labels

Finalmente, agreguemos una leyenda al gráfico anterior utilizando la función legend().

> legend('topleft',inset=0.05,"Performace",lty=3,col='pink',lwd=4)

La posición se puede especificar mediante coordenadas x e y o usando una posición como ‘topleft’ o ‘bottomright’. La opción ‘inset’ se refiere a mover la caja de la leyenda un poco hacia el interior del gráfico. El gráfico resultante ahora tiene una leyenda.

Graph With Legend

Sobreponiendo Gráficos

R also allows two graphs to be displayed on top of each other instead of creating a new window for every graph. This is done by calling a lines() function for the second graph rather than plot() again. These are most useful when performing comparisons of metrics or among different sets of values. Let us look at an example.

x=seq(2,10,0.1)
y1=x^2
y2=x^3
plot(x,y1,type='l',col='red')
lines(x,y2,col='green')
legend('bottomright',inset=0.05,c("Squares","Cubes"),lty=1,col=c("red","green"),title="Graph type")
Overlaid Graph With Legend

Añadiendo Líneas a un Gráfico

Las líneas rectas se pueden añadir a un gráfico existente utilizando la función simple abline(). La función abline() toma 4 argumentos, a, b, h y v. Las variables a y b representan la pendiente e intersección. H representa los puntos y para líneas horizontales y v representa los puntos x para líneas verticales.

Veamos un ejemplo para que quede claro. Intenta ejecutar estas tres declaraciones después de construir el gráfico anterior para cuadrados y cubos.

abline(a=4,b=5,col='blue')
abline(h=c(4,6,8),col="dark green",lty=2)
abline(v=c(4,6,8),col="dark green",lty=2)
Graph With Lines

La primera línea azul se construye con la pendiente e intersección especificadas. Los siguientes conjuntos de tres líneas horizontales y verticales se dibujan en los valores x e y especificados en el estilo de línea punteada, como se menciona en lty=2.

Esto cubre lo básico de la función de trazado en R. Cuando se combina con otros paquetes como ggplot2, R construye los gráficos más presentables y dinámicos, como veremos en tutoriales posteriores.

Source:
https://www.digitalocean.com/community/tutorials/plot-function-in-r