Introducción a los gráficos en R

Acciones de Documento
  • Vista de contenidos
  • Marcadores (bookmarks)
  • Exportación de LTI
Autor: Alberto Muñoz García

Introducción

Los gráficos disponibles en R son de gran calidad y de una versatilidad impresionante.
Para hacernos una idea, podemos ejecutar la demo del programa mediante:

demo("graphics")

Para poder crear gráficos es necesario inicializar un dispositivo gráfico (graphic device),
y si hay varios, elegir uno de ellos.

win.graph()
x11()
windows()
Crea una ventana para gráficos (graphic device) y la deja como disposito activo, al cual se enviarán todos los dibujos.

 

Para eliminar la ventana gráfica actual:

dev.off()

En el caso de que haya varias ventanas gráficas, podemos cambiar entre ellas utilizando
el comando dev.set(). Un ejemplo:

> win.graph()         # Crea una ventana gráfica (dispositivo 2)
> win.graph()     # Crea otra ventana gráfica (dispositivo 3): ésta es ahora la
ventana activa
> dev.set(2)      # Hace que la ventana activa sea la dos.
X11
2

Para eliminar una ventana gráfica:

dev.off(3)        # Elimina la ventana número 3. La ventana 2 queda como ventana
activa

Gráficos de alto nivel

Entre las funciones de alto nivel para dibujar, podemos destacar por su frecuencia de uso
las siguientes:

barplot Diagrama de barras
boxplot Diagrama de caja
contour Gráfico de contorno
hist Histograma
pairs Pares de gráficos de dispersión por variables
persp gráficos 3D
plot Rutina de dibujo general

 

Veamos algunos ejemplos:

> data(VADeaths)
> VADdeaths
Rural Male Rural Female Urban Male Urban Female
50-54       11.7          8.7       15.4          8.4
55-59       18.1         11.7       24.3         13.6
60-64       26.9         20.3       37.0         19.3
65-69       41.0         30.9       54.6         35.1
70-74       66.0         54.3       71.1         50.0

> barplot(VADeaths)



> barplot(VADdeaths,beside=T)

 


De ese modo obtendremos diagramas de barras por grupos de edad para cada
tipo de población.


> x = rnorm(200)     # genera 200 datos de una distribución normal estandarizada
> boxplot(x)           # dibuja un diagrama de caja para mostrar la forma de la
distribución

boxplot

Pero también podemos dibujar diagramas de caja para matrices, uno por cada
columna (variable) de la matriz. Obsérvese la diferencia entre las dos órdenes
siguientes:

> boxplot(deaths)             # Trata todos los datos como una sola variable
> boxplot(data.frame(deaths)) # Un diagrama de caja por cada categoría

> x = rnorm(1000) # Genera 1000 datos de una normal
> hist(x)        # Histograma de los 1000 datos

histograma

Vamos a ver un ejemplo de la función pairs sobre el conjunto de datos iris. Este conjunto recoge
una matriz de 150 observaciones con 4 variables cada una, relativas a la morfología de varias
especies ornamentales. Lo que vamos a hacer a continuación es cargar el conjunto de datos iris
en la memoria, mostrar cuatro registros, y graficar las variables dos a dos.

> data(iris) # Cargamos el conjunto de datos iris
> iris[1:4,] # Mostramos 4 registros
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
> pairs(iris[,1:4]) # Mostramos los gráficos de dispersion de las variables

iris

Ejemplo de dibujo de una función z=f(x,y):

> x = seq(-10,10,length=50)         # Generamos una malla de puntos (x,y)
> y = x
> f = function(x,y) { x^2 - y^2 }   # Definimos la función que dibujaremos
> z = outer(x,y,f)     # La función outer evalua la función f en cada
punto(xi,yj)
> persp(x,y,z)                    # Un gráfico en perspectiva
> persp(x,y,z,theta=30,phi=30)    # Otro

funcion

La función plot()

El comando plot se utiliza para crear una nueva figura.

> x = seq(-10,10)  # Generamos los números -10, -9,....,9, 10
> y = x^2          # Generamos los cuadrados de dichos números
> plot(x,y)       # Graficamos

funcion2

Dicha función admite bastantes argumentos. Vamos a destacar los más importantes:

 



axes=F       Suprime la generación de los ejes



log="x"      Hace que alguno de los ejes se tome en escala logarítmica
log="y"
log="xy"



type="p"    Dibuja puntos individuales (opción por defecto)
type="l"  Dibuja líneas
type="b"    Dibuja puntos y líneas
type="o"    Dibuja puntos atravesados por líneas
type="h"    Dibuja con líneas verticales
type="s"  Dibuja a base de funciones escalera
type="S"    Casi lo mismo
type="n"  No dibuja nada. Pero deja marcados los puntos para manejos posteriores



xlab="cadena"    Etiqueta para el eje de las x
ylab="cadena"  Etiqueta para el eje de las y
main="cadena"  Título del gráfico
sub="cadena"     Subtítulo del gráfico



pch="simbolo"  Se dibuja con el simbolo especificado. Por ejemplo:
pch=18
pch="x"
pch="P"



col= numero entero    Color para dibujar
col=2               Color rojo
col=3               Color verde


 

Algunos ejemplos:

x = seq(-10,10)
y = x^2
plot(x,y,type="l",xlab="eje de las x",ylab="eje de las y",main="Parabola")
plot(x,y,type="h",xlab="eje de las x",ylab="eje de las y",main="Parabola",axes=F)
plot(x,y,pch=18,col=2,type="b")

funcion4

Gráficos de bajo nivel

Los comandos de bajo nivel sirven para añadir información extra a los gráficos que producen los
comandos de alto nivel. Por ejemplo, podríamos querer añadir texto a un gráfico, puntos extras,
líneas, cosas así. Entre los más importantes podemos destacar:

 



points(x,y)       Añade puntos o líneas conectadas al gráfico actual
lines(x,y)



text(x,y,etiquetas) Añade texto al gráfico actual en la posición x,y



abline(a,b)          Añade una línea de pendiente a y que corta al origen en b
abline(h=y)          Añade línea horizontal que corta al eje y en h=y
abline(v=x)          Lo análogo para línea vertical



polygon(x,y)      Dibuja un polígono



title(main,sub)     Añade título y subtítulo al gráfico actual



axis(side)           Añade ejes al gráfico actual (de 1 a 4)


Algunos ejemplos:

>  x = seq(-10,10)
> y = x^2
>  plot(x,y,axes=F)
> axis(1)

>  x = seq(-10,10)
> y = x^2
> plot(x,y)
> abline(h=40,col=3)
> abline(v=0,col=4)
> text(-5,60,"grafico raro")

> x = rnorm(200)
> plot(x)
> abline(h=0,col=2)

Varios graficos en una misma ventana

Para conseguir esto se usa el comando  par, con la opción mfrow. Ejemplos:

par(mfrow=c(1,1))      # un solo gráfico por ventana: la opción por defecto
par(mfrow=c(2,1))      # Dibuja una matriz de gráficos 2x1: un gráfico debajo de otro
par(mfrow=c(2,3))      # Matriz de gráficos 2 x 3 : dos filas por tres columnas

Un ejemplo:

> x = rnorm(200)          # Se generan 200 valores de una normal estandarizada
> par(mfrow=c(2,2))      # Se crea una matriz de gráficos 2 x 2
> plot(x)                # Dibujo de x frente al índice 1 a 200
> hist(x)              # Histograma de x
> boxplot(x)             # Diagrama de caja de x
> qqnorm(x)            # Gráfico cuantil-cuantil de x frente a la distribución
normal

 

ventanas

Reutilizar Curso
Descargar este curso