Está en la página 1de 66

Grficos con R

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid

Grficos con R

Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Oscar Perpin Lamigueiro


http://oscarperpinan.github.io

Introduccin
Base y grid
Datos de ejemplo
Grficos Grid

Base y grid

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin

En R existen dos formas de generar grficos:


I
I

Base graphics
Grid graphics

Los grficos base slo producen un resultado grfico,


pero no un objeto.

Los grficos grid generan un resultado grfico y un


objeto.

Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Grficos grid

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

Dentro del conjunto grid existen dos grandes paquetes:

lattice

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

Implementacin de los grficos trellis, The Elements of


Graphing Data de Cleveland)

Estructura matricial de paneles definida a travs de


una frmula.

xyplot(wt ~ mpg | am, data = mtcars, groups = cyl)

ggplot2

Grficos grid
Dentro del conjunto grid existen dos grandes paquetes:

ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

Implementacin de The Grammar of Graphics de


Wilkinson.

Combinacin de funciones que proporcionan los


componentes (capas) del grfico.

ggplot(mtcars, aes(mpg, wt)) +


geom_point(aes(colour=factor(cyl))) +
facet_grid(. ~ am)

Lattice
ggplot2

Introduccin
Base y grid
Datos de ejemplo
Grficos Grid

Leemos desde el archivo local

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

aranjuez <- read.csv('data/aranjuez.csv')


summary(aranjuez)

Lattice
ggplot2

Aadimos algunas columnas

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

aranjuez$date <- as.Date(aranjuez$X)

Introduccin
Base y grid

aranjuez$month <- as.numeric(


format(aranjuez$date, '%m'))
aranjuez$year <- as.numeric(
format(aranjuez$date, '%Y'))
aranjuez$day <- as.numeric(
format(aranjuez$date, '%j'))
aranjuez$quarter <- quarters(aranjuez$date)

Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Introduccin
Grficos Grid
Lattice
ggplot2

Lattice

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

Documentacin: Cdigo y Figuras del libro

library(lattice)

ggplot2

xyplot

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

xyplot(Radiation ~ TempAvg, data=aranjuez)

Grficos con R

30

Radiation

20

10

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Aadimos rejilla

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

xyplot(Radiation ~ TempAvg, data=aranjuez,


grid = TRUE)

ggplot2

Grficos con R

30

Radiation

20

10

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Aadimos regresin lineal

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

xyplot(Radiation ~ TempAvg, data=aranjuez,


type=c('p', 'r'), grid = TRUE,
lwd=2, col.line='black')

Lattice
ggplot2

Grficos con R

30

Radiation

20

10

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Aadimos ajuste local

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

xyplot(Radiation ~ TempAvg, data=aranjuez,


type=c('p', 'smooth'), grid = TRUE,
lwd=2, col.line='black')

Lattice
ggplot2

Grficos con R

30

Radiation

20

10

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Paneles

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

xyplot(Radiation ~ TempAvg|factor(year),
data=aranjuez)

ggplot2

Grficos con R
0

2010
30
20
10
0

Radiation

2004

10
0

10

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

Introduccin
Base y grid
Datos de ejemplo

20

30

2006

TempAvg

Grficos Grid

2009

2005

30

2008

20

20

2011

2007

30

10

10

20

30

Lattice

30
20
10
0

ggplot2

Grupos

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

xyplot(Radiation ~ TempAvg, groups=quarter,


data=aranjuez, auto.key=list(space='right'))

ggplot2

Grficos con R

30

Radiation

20

10

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Q1
Q2
Q3
Q4

Paneles y grupos

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

xyplot(Radiation ~ TempAvg|factor(year),
groups=quarter,
data=aranjuez,
layout=c(4, 2),
auto.key=list(space='right'))

Grficos Grid
Lattice
ggplot2

Grficos con R
0

2008

Radiation

2004

20

10

10

20

30

2010

30

2006

10

20

20

30

Oscar Perpin
Lamigueiro

30

http://
oscarperpinan.
github.io

30

Introduccin

20

Base y grid
Datos de ejemplo

Grficos Grid

10

Lattice
ggplot2

2007

TempAvg

10

2011

2005

20

2009

30

10

Q1
Q2
Q3
Q4

Paneles y grupos

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

xyplot(Radiation ~ TempAvg|factor(year),
groups=quarter,
data=aranjuez,
layout=c(4, 2),
type=c('p', 'r'),
auto.key=list(space='right'))

Grficos Grid
Lattice
ggplot2

Grficos con R
0

2008

Radiation

2004

20

10

10

20

30

2010

30

2006

10

20

20

30

Oscar Perpin
Lamigueiro

30

http://
oscarperpinan.
github.io

30

Introduccin

20

Base y grid
Datos de ejemplo

Grficos Grid

10

Lattice
ggplot2

2007

TempAvg

10

2011

2005

20

2009

30

10

Q1
Q2
Q3
Q4

Colores y tamaos

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

xyplot(Radiation ~ TempAvg,
type=c('p', 'r'),
cex=2, col='blue',
alpha=.5, pch=19,
lwd=3, col.line='black',
data=aranjuez)

Grficos Grid
Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

30

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

20

Radiation

ggplot2

10

10

TempAvg

20

30

Colores con grupos

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

xyplot(Radiation ~ TempAvg,
group=quarter,
col=c('red', 'blue', 'green', 'yellow'),
pch=19,
auto.key=list(space='right'),
data=aranjuez)

Grficos Grid
Lattice
ggplot2

Grficos con R

30

Radiation

20

10

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Q1
Q2
Q3
Q4

Colores con grupos: par.settings y


simpleTheme

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

Primero definimos el tema con simpleTheme

myTheme <- simpleTheme(col=c('red', 'blue',


'green', 'yellow'),
pch=19, alpha=.6)

Lattice
ggplot2

Colores con grupos: par.settings y


simpleTheme

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Aplicamos el resultado en par.settings

xyplot(Radiation ~ TempAvg,
groups=quarter,
par.settings=myTheme,
auto.key=list(space='right'),
data=aranjuez)

Grficos Grid
Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

30

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

20

Radiation

ggplot2

Q1
Q2
Q3
Q4

10

10

TempAvg

20

30

Colores: brewer.pal

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin

library(RColorBrewer)

Base y grid
Datos de ejemplo

Grficos Grid

myPal <- brewer.pal(n = 4, 'Dark2')


myTheme <- simpleTheme(col = myPal,
pch=19, alpha=.6)

ColorBrewer: http://colorbrewer2.org/

Lattice
ggplot2

Asignamos paleta con par.settings

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

xyplot(Radiation ~ TempAvg,
groups=quarter,
par.settings=myTheme,
auto.key=list(space='right'),
data=aranjuez)

Grficos Grid
Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

30

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

20

Radiation

ggplot2

Q1
Q2
Q3
Q4

10

10

TempAvg

20

30

Paneles a medida

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

xyplot(Radiation ~ TempAvg, data=aranjuez,


panel=function(x, y, ...){
panel.xyplot(x, y, ...)
minIdx <- which.min(x)
maxIdx <- which.max(x)
panel.points(x[c(minIdx, maxIdx)],
y[c(minIdx, maxIdx)],
cex=2, col='red')
panel.text(x[minIdx], y[minIdx],
'MIN', pos=1)
})

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Grficos con R

30

Radiation

20

10

MIN

10

TempAvg

20

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Matriz de grficos de dispersin

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

splom(aranjuez[,c("TempAvg", "HumidAvg", "WindAvg",


"Rain", "Radiation", "ET")],
pscale=0, alpha=0.6, cex=0.3, pch=19)

Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Matriz de grficos de dispersin

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

splom(aranjuez[,c("TempAvg", "HumidAvg", "WindAvg",


"Rain", "Radiation", "ET")],
groups=aranjuez$quarter,
auto.key=list(space='right'),
pscale=0, alpha=0.6, cex=0.3, pch=19)

Grficos Grid
Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

levelplot

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

levelplot(TempAvg ~ year * day, data = aranjuez)

Grficos con R
Oscar Perpin
Lamigueiro

30

300

http://
oscarperpinan.
github.io

25

Introduccin
Base y grid

20

Datos de ejemplo

Grficos Grid
Lattice

15

day

200

10

5
100
0

2004

2006

2008

year

2010

ggplot2

levelplot con una paleta mejor


I

Usamos colorRampPalette para generar una


funcin que interpola colores a partir de una paleta

levelPal <- colorRampPalette(


brewer.pal(n = 9, 'Oranges'))

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

Comprobamos que es una funcin generadora de


colores

levelPal(14)
[1] "#FFF5EB" "#FEEBD9" "#FDE0C3" "#FDD3A8" "#FDC088" "#FDAB67" "#FD974A"
[8] "#F9812F" "#F16B16" "#E45709" "#D14501" "#B13A02" "#973003" "#7F2704"

Usamos esta funcin con col.regions

levelplot(TempAvg ~ year * day,


col.regions = levelPal,
data = aranjuez)

ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

30

300

http://
oscarperpinan.
github.io

25

Introduccin
Base y grid

20

Datos de ejemplo

Grficos Grid
Lattice

15

day

200

10

5
100
0

2004

2006

2008

year

2010

ggplot2

contourplot

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

contourplot(TempAvg ~ year * day,


data = aranjuez,
lwd = .5,
labels = list(cex = 0.6),
label.style = 'align',
cuts = 5)

Grficos Grid
Lattice
ggplot2

Grficos con R
10

Oscar Perpin
Lamigueiro

0
10

10

http://
oscarperpinan.
github.io

10

10
10
10

1010

10

10

10

10

300

10
10

Introduccin

20
20

20
20

Base y grid

20

20

20

Datos de ejemplo

20

20

Grficos Grid

20

Lattice
ggplot2

day

200
20

20
20

20

20

20

20

20

20

20

20

20

100

10
10

10

10

10
10

10

10

10

10

10
10

10

10

0
0

2004

2006

2008

year

2010

Box-and-Whiskers

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

bwplot(Radiation ~ month, data=aranjuez,


horizontal=FALSE, pch='|')

ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

30

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

20

Radiation

10

Lattice

ggplot2

0
1

month

10

11

12

Box-and-Whiskers

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

bwplot(Radiation ~ month, data=aranjuez,


horizontal=FALSE,
panel=panel.violin)

Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

30

Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

20

Radiation

ggplot2

10

0
1

month

10

11

12

Histogramas

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

histogram(~ Radiation|factor(year), data=aranjuez)

Grficos con R
0

2010

10

20

30

Oscar Perpin
Lamigueiro

2011

http://
oscarperpinan.
github.io

15
10

Introduccin

Base y grid
Datos de ejemplo

2007

2008

Grficos Grid

2009

Lattice

Percent of Total

15
10
5
0

2004

2005

2006

15
10
5
0
0

10

20

30

Radiation

10

20

30

ggplot2

Grficos de densidad

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

densityplot(~ Radiation, groups=quarter,


data=aranjuez,
auto.key=list(space='right'))

Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

0.10

Introduccin

0.08

Base y grid
Datos de ejemplo

Grficos Grid
Lattice

0.06

ggplot2

Density

Q1
Q2
Q3
Q4
0.04

0.02

0.00

10

20

Radiation

30

dotplot

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

avRad <- aggregate(Radiation ~ month * year,


data=aranjuez, FUN=mean)
dotplot(month ~ Radiation|factor(year), data=avRad)

Lattice
ggplot2

Grficos con R
5

10

15

2010
12
11
10
9
8
7
6
5
4
3
2
1

month

25

Oscar Perpin
Lamigueiro

2011

http://
oscarperpinan.
github.io

Base y grid

Datos de ejemplo

2008

Lattice

2004

2005

2006

10

15

ggplot2

20

Grficos Grid

2009

12
11
10
9
8
7
6
5
4
3
2
1

Introduccin

2007
12
11
10
9
8
7
6
5
4
3
2
1

20

25

Radiation

10

15

20

25

Quantile-Quantile

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

firstHalf <- aranjuez$quarter %in% c('Q1', 'Q2')


qq(firstHalf ~ Radiation, data=aranjuez)

Lattice
ggplot2

Grficos con R

30

TRUE

20

10

10

20

FALSE

30

Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

Quantile-quantile

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

winter <- aranjuez$quarter %in% c('Q1', 'Q4')


qq(winter ~ Radiation, data=aranjuez)

Lattice
ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io

30

Introduccin
Base y grid
Datos de ejemplo

TRUE

20

10

10

20

FALSE

30

Grficos Grid
Lattice
ggplot2

Quantile-Quantile

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid
Lattice

qqmath(~TempAvg, data=aranjuez,
groups=year, distribution=qnorm)

ggplot2

Grficos con R

30

TempAvg

20

10

Base y grid
Datos de ejemplo

Grficos Grid
Lattice
ggplot2

qnorm

http://
oscarperpinan.
github.io
Introduccin

Oscar Perpin
Lamigueiro

Introduccin
Grficos Grid
Lattice
ggplot2

ggplot2

Grficos con R
Oscar Perpin
Lamigueiro

http://
oscarperpinan.
github.io
Introduccin
Base y grid
Datos de ejemplo

Grficos Grid

Documentacin de ggplot2

Codigo del libro

ggplot2 desde lattice (PDF)

Lattice
ggplot2