módulo 3. gráficos básicos con r · 0 10 20 30 40 50 0 10 20 30 40 50 x y la importancia de la...

25
Módulo 3. Gráficos básicos con R Curso Herramientas para Data Science Prof. Jose Jacobo Zubcoff Vallejo, PhD Universidad de Alicante 2017 @ Licencia Creative Common BY Módulo 3. Gráficos básicos con R A partir de unos datos cargados en memoria se pueden hacer diversos tipos de gráficos. En el módulo 1 vimos como hacer un gráfico simple de puntos con los datos sobre presión (“pressure”). plot(pressure) 0 50 100 150 200 250 300 350 0 200 400 600 800 temperature pressure En este módulo, presentaremos funcionalidades y mejoras sobre los comandos básicos para poder controlar a nuestro gusto la forma y colores de nuestro gráfico. Además, para poder guardar los que consideremos necesario. Para empezar, para visualizar algunos gráficos simples podemos crear unos datos aleatorios. Por ejemplo, crearemos una variable que contenga 50 datos aleatorios a partir de una variable normal (o gaussiana). x <- 1:50 # asignamos a x los valores de 1 a 50 y<-x+ rnorm(x) # rnorm() genera datos aleatorios con probabilidad normal plot(x,y) #nube de puntos de x,y 1

Upload: others

Post on 02-Nov-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

Módulo 3. Gráficos básicos con RCurso Herramientas para Data ScienceProf. Jose Jacobo Zubcoff Vallejo, PhD

Universidad de Alicante2017 @ Licencia Creative Common BY

Módulo 3. Gráficos básicos con R

A partir de unos datos cargados en memoria se pueden hacer diversos tipos de gráficos. En el módulo 1 vimoscomo hacer un gráfico simple de puntos con los datos sobre presión (“pressure”).plot(pressure)

0 50 100 150 200 250 300 350

020

040

060

080

0

temperature

pres

sure

En este módulo, presentaremos funcionalidades y mejoras sobre los comandos básicos para poder controlara nuestro gusto la forma y colores de nuestro gráfico. Además, para poder guardar los que consideremosnecesario.

Para empezar, para visualizar algunos gráficos simples podemos crear unos datos aleatorios. Por ejemplo,crearemos una variable que contenga 50 datos aleatorios a partir de una variable normal (o gaussiana).x <- 1:50 # asignamos a x los valores de 1 a 50y <- x + rnorm(x) # rnorm() genera datos aleatorios con probabilidad normalplot(x,y) #nube de puntos de x,y

1

Page 2: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

La importancia de la relación de aspecto

Los gráficos sirven para representar datos, por lo que es una herramienta muy potente, y debe usarse paramostrar de una manera visual, y simple, el patrón que hayamos encontrado en los datos.

Para ello debemos controlar algunas cosas, como el color y la forma. Empezaremos por esta última, porquela relación de aspecto puede llegar a ocultar un patrón si no tenemos cuidado de ello.

La ventana donde se muestran los gráficos se puede cambiar de tamaño, pero debemos tener cuidado demantener siempre la mejor relación de aspecto. Esto lo podemos ver en el siguiente juego visual:plot(x*0.97, sin(x*0.97))

0 10 20 30 40 50

−1.

0−

0.5

0.0

0.5

1.0

x * 0.97

sin(

x *

0.97

)

2

Page 3: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

En dicho gráfico no parece adivinarse ningún patrón. Quizas si cambiamos de tamaño la ventana aparezca elpatrón existente. Podemos hacerlo con el ratón, o bien, podemos forzar que la representación ocupe solouna parte de la ventana usando la función “par(mfrow=c(1,1))” (una única ventana y la gráfica aparece entoda la ventana), pero ajustando ahora a “par(mfrow=c(3,1))” (una única ventana con tres filas para hacergráficos). Debemos saber que funciona con la ventana de gráficos de la interfaz de R. En otros entornos puedeno tener efecto visible (como en guiones destinados a obtener documentos RMarkdown, Shiny o R Notebook).

Ahora representaremos los mismos datos, pero en un tercio de la misma ventana, veremos si el patrón existentesale a la luz:par(mfrow=c(3,1)) # preparamos una Ventana de 3 filas, 1 columna para plotsplot(x*0.97, sin(x*0.97))par(mfrow=c(1,1)) # volvemos a una Ventana de 1 fila, 1 columna para plots

0 10 20 30 40 50

−1.

0

x * 0.97

sin(

x *

0.97

)

Diagramas de densidad

Con la función “plot(density())” podemos representar visualmente la densidad de una variable.plot(density(y)) #Plot de la Densidad de y

−20 0 20 40 60

0.00

00.

005

0.01

00.

015

0.02

0

density.default(x = y)

N = 50 Bandwidth = 6.008

Den

sity

density(y) #datos numéricos sobre densidad de y

#### Call:

3

Page 4: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

## density.default(x = y)#### Data: y (50 obs.); Bandwidth 'bw' = 6.008#### x y## Min. :-18.920 Min. :2.221e-05## 1st Qu.: 2.776 1st Qu.:2.265e-03## Median : 24.471 Median :1.376e-02## Mean : 24.471 Mean :1.151e-02## 3rd Qu.: 46.167 3rd Qu.:1.959e-02## Max. : 67.862 Max. :2.080e-02# Diagrama de densidad con fondo de color#asignamos la densidad de una variable a un vector para luego graficard <- density(y)

#dibujamos el diagrama de densidad y agregamos el títuloplot(d, main="Diagrama de densidad mejorado")

#ahora pintamos con colores el fondo y el bordepolygon(d, col="grey", border="orange")

−20 0 20 40 60

0.00

00.

005

0.01

00.

015

0.02

0

Diagrama de densidad mejorado

N = 50 Bandwidth = 6.008

Den

sity

Histogramas

Podemos hacer un histograma muy fácilmente con R. Solo necesitamos pasar la variable que contiene losdatos a la función “hist()”.hist(y) #histograma de y

4

Page 5: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

Histogram of y

y

Fre

quen

cy

−10 0 10 20 30 40 50

02

46

810

También podemos dibujar un diagrama de cajas o boxplot con la función “boxplot()”.boxplot(y) #Diagrama de cajas de y

010

2030

4050

La función para dibujar diagramas de barra en R es “barplot()”.barplot(y) #Diagrama de barras de y

5

Page 6: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

010

2030

40

También podemos dibujar diagramas tipo tarta, o quesitos en R con la función “pie()”.pie(x) #Diagrama de tartas de x

123456789101112131415161718192021222324252627282930

3132

333435363738

3940

4142 43 44 45 46

4748

49

50

Formas en los gráficos

Para controlar las formas de la representación gráfica se puede usar el parámetro “pch=” que en algunasfunciones permite elegir la forma.

Algunos ejemplos del uso del parámetro “pch=”:plot(x, y, pch=1) # círculos

6

Page 7: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=2) # triangulos

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=3) # cruces

7

Page 8: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=4) # con x

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=6) # triangulos invertidos

8

Page 9: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=7) # cuadrados con x

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=8) # asteriscos

9

Page 10: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=9) # rombos con x

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=10) # círculos con mirilla

10

Page 11: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=11) # estrellas

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=12) # cuadrados con +

11

Page 12: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=15) # cuadrados rellenos

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=16) # círculos rellenos

12

Page 13: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=17) # triángulos rellenos

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=18) # rombos rellenos

13

Page 14: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

# Preparamos el gráficoplot(1, 1, xlim=c(1,5.5), ylim=c(0,7), type="n", ann=FALSE)

# Dibujamos los primeros 4 incrementando tamaño y colortext(1:5, rep(6,5), labels=c(0:4), cex=1:5, col=1:5)

# Pintamos símbolos de esos primeros 4points(1:5, rep(5,5), cex=1:5, col=1:5, pch=0:4)text((1:5)+0.4, rep(5,5), cex=0.6, (0:4))

# Pintamos los símbolos del 5-9 con sus etiquetaspoints(1:5, rep(4,5), cex=2, pch=(5:9))text((1:5)+0.4, rep(4,5), cex=0.6, (5:9))

# Pintamos los símbolos del 10-14 con sus etiquetaspoints(1:5, rep(3,5), cex=2, pch=(10:14))text((1:5)+0.4, rep(3,5), cex=0.6, (10:14))

# Pintamos los símbolos del 15-19 con sus etiquetaspoints(1:5, rep(2,5), cex=2, pch=(15:19))text((1:5)+0.4, rep(2,5), cex=0.6, (15:19))

# Pintamos los símbolos del 20-24 con sus etiquetaspoints((1:6)*0.8+0.2, rep(1,6), cex=2, pch=(20:25))text((1:6)*0.8+0.5, rep(1,6), cex=0.6, (20:25))

14

Page 15: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

1 2 3 4 5

01

23

45

67

0 1 2 3 40 1 2 3 4

5 6 7 8 9

10 11 12 13 14

15 16 17 18 19

20 21 22 23 24 25

Colores en los gráficos

plot(x, y, pch=2, col="red") # rojo

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=2, col="blue") # azul

15

Page 16: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=2, col="cyan") # celeste

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=2, col="green") # verde

16

Page 17: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

plot(x, y, pch=2, col="grey") # gris

0 10 20 30 40 50

010

2030

4050

x

y

mis_colores <- rainbow(length(x))plot(x, y, col=mis_colores)

17

Page 18: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

##Agregar líneas a un gáficoplot(y) ; abline(v=25, lty=3)

0 10 20 30 40 50

010

2030

4050

Index

y

# Añade línea de puntos vertical

plot(y) ; abline(h=40, lty=2, col="red")

18

Page 19: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

Index

y

# Añade línea de rayas horizontal roja a la altura 40

plot(y) ; abline(h=40, lty=2, col="red"); abline(v=25, lty=3)

0 10 20 30 40 50

010

2030

4050

Index

y

#todo junto

plot(y~x) ; abline(lm(y~x), lty=1,col="blue")

19

Page 20: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

x

y

# línea de la recta de regresión lineal y~x

Controlar límites en los ejes

Podemos establecer los límites para los ejes usando los parámetros “xlim=c(Xmin,Xmax)” e“ylim=c(Ymin,Ymax)”. Por ejemplo, usaremos límites distintos para x e y con el siguiente comando:plot(x, y, xlim=c(5, 40), ylim=c(0, 100))

5 10 15 20 25 30 35 40

020

4060

8010

0

x

y

#límites para los ejes x e y

20

Page 21: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

Agregar etiquetas a los ejes

Es fundamental etiquetar correctamente los ejes en los gráficos. Además es muy fácil agregar etiquetas en R.Usaremos los parámetros “xlab=” e “ylab=” de los comandos “plot” en R.plot(y, xlab = "Tiempo (en Horas)", ylab = "Temperatura (ªC)" )

0 10 20 30 40 50

010

2030

4050

Tiempo (en Horas)

Tem

pera

tura

(ªC

)

#etiquetas para ejes

Añadir puntos a un gráfico

Podemos añadir puntos a un gráfico, ya sea individualmente algún punto que se quiera resaltar en otro color,o bien una serie de puntos en otro color o formato a destacar.

Por ejemplo:plot(y, xlab = "Tiempo (en Horas)", ylab = "Temperatura (ªC)" )

#añadimos puntos de nuevos datos en círculos de color rojoz<-y*y/10points(z, col="red", pch=19)

#Ahora añadimos un punto para resaltar algopoints(25,mean(y),col="blue",pch=19)

#Agregamos un textotext(25,mean(y)+5,"Media",col="blue")

21

Page 22: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

Tiempo (en Horas)

Tem

pera

tura

(ªC

)

Media

Agregar leyenda a un gráfico

Puede resultar útil en ocasiones agregar una leyenda a un gráfico. Para ello R tiene una función específicadenominada “legend()”.plot(y, xlab = "Tiempo (en Horas)", ylab = "Temperatura (ªC)" ) ; legend("topleft", inset=0.05, "datos", pch=1, col="blue", bty="n")

0 10 20 30 40 50

010

2030

4050

Tiempo (en Horas)

Tem

pera

tura

(ªC

)

datos

# Añade una leyenda

# Vamos a hacer un ejemplo mas complejo

22

Page 23: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

x<-1:10; y1=x*x; y2=2*y1#Dibujamos línea de puntos en verde oscuro para y1plot(x, y1, type="b", pch=17, col="forestgreen", xlab="x", ylab="y", main = "Los colores marcan la diferencia")# Añadimos ahora una línea azul para y2lines(x, y2, pch=18, col="blue", type="b", lty=2)# Añadimos una leyenda en la posición x=1, y=95legend(1, 95, legend=c("Línea 1", "Línea 2"),

col=c("forestgreen", "blue"), lty=1:2, cex=0.8)

2 4 6 8 10

020

4060

8010

0

Los colores marcan la diferencia

x

y

Línea 1Línea 2

Agregar anotaciones a un gráfico

A veces es necesario agregar alguna anotación a un gráfico. En R existe una función que agrega a un gráficouna anotación, es “text(‘mi anotación’)”. Un ejemplo con el gráfico anterior.plot(y) ; text(10, 20, "Aquí mi texto")

23

Page 24: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

0 10 20 30 40 50

010

2030

4050

Index

y

Aquí mi texto

# Anotación en gráfico

plot(y) ; text(10, 20, "Aquí uno"); text(40, 27, "Aquí otro",col = "red")

0 10 20 30 40 50

010

2030

4050

Index

y

Aquí uno

Aquí otro

# Anotación en gráfico

Guardar un gráfico

Para guardar un gráfico hay varias formas en R y RStudio. Ya hemos explicado como hacerlo desde lasopciones de menú y desde el panel de gráficos en RStudio, usando el botón “Export” del panel “Plots”. A

24

Page 25: Módulo 3. Gráficos básicos con R · 0 10 20 30 40 50 0 10 20 30 40 50 x y La importancia de la relación de aspecto Losgráficossirvenpararepresentardatos,porloqueesunaherramientamuypotente,ydebeusarsepara

veces queremos automatizar este procedimiento e incluirlo en un guión de comandos para que se guarde demanera automática cada vez que se ejecute el guión.

Para poder guardar un gráfico en un fichero tenemos varios comandos que hacen lo mismo pero guardan endistinto formato: png, jpeg, pdf, etc.

El proceso tiene tres pasos:

1. abrir un contenedor del futuro gráfico2. hacer el gráfico

3. cerrar el contenedor con el gráfico generado

Por ejemplo para guardar el gráfico en un fichero PNG en nuestra carpeta actual (la que sea el directorio detrabajo actual):png("migrafico.png") #Preparamos un fichero para guardarhist(y) #Dibujamos el histograma de ydev.off() #Se cierra/guarda en el fichero elegido

## pdf## 2

Ahora guardaremos en formato JPEG:jpeg("migrafico.jpeg") #Preparamos un fichero para guardarhist(y) #Dibujamos el histograma de ydev.off() #Se cierra/guarda en el fichero elegido

## pdf## 2

Como en todos los casos en que presentamos funciones o parámetros de funciones, recomendamos buscar enla ayuda de R para más detalles acerca de más características que pueden ser de utilidad para personalizargráficos.

25