57
Typologie Base ggplot2 ef´ erences Optimiser ses graphiques avec R erˆ ome Sueur MNHN – Syst´ ematique et Evolution UMR CNRS 7205 – OSEB [email protected] 28 Avril 2011 J Sueur Graphiques

Optimiser ses graphiques avec R - Muséum national d

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Optimiser ses graphiques avec R

Jerome Sueur

MNHN – Systematique et EvolutionUMR CNRS 7205 – OSEB

[email protected]

28 Avril 2011

J Sueur Graphiques

Page 2: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

1 Typologie

2 Base

3 ggplot2

4 References

J Sueur Graphiques

Page 3: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Outline

1 Typologie

2 Base

3 ggplot2

4 References

J Sueur Graphiques

Page 4: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Typologie – Quels graphiques ?

simples et composes

2D ou 3D

statiques, interactifs, animes

J Sueur Graphiques

Page 5: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Typologie – Familles

Quatre familles de graphiques issus de la base ou de packagesspecifiques :

base (Ross Ihaka)

package grids (Paul Murrel)

package lattice (Deepayan Sarkar)

package ggplot2 (Hadley Wickman)

J Sueur Graphiques

Page 6: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Outline

1 Typologie

2 Base

3 ggplot2

4 References

J Sueur Graphiques

Page 7: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Principes

Cinq grands types de fonctions graphiques

haut-niveau (high-level)

bas-niveau (low-level)

parametrage (parameters)

division (treillis, faceting)

impression (vectorielle, matricielle)

J Sueur Graphiques

Page 8: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Fonctions de haut-niveau

nuages de points

profils

graphiques en batons

histogrammes

boıtes a moustaches

graphiques en violons

camemberts

radars

contours

cartes de densite

cartes geographiques

images

etc

J Sueur Graphiques

Page 9: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Fonctions de bas-niveau

points, traits, surfaces (rectangles, polygones, cercles)

lignes, courbes, segments, fleches

titres, legendes, etiquettes

J Sueur Graphiques

Page 10: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Fonctions de parametrage

couleurs

taille, police, orientation

echelles

marges

superposition

etc

J Sueur Graphiques

Page 11: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Nombre de packages

data

vers count date

1 1.30 110 2001-06-21

2 1.40 129 2001-12-17

3 1.50 161 2002-06-12

4 1.70 219 2003-05-25

5 1.80 273 2003-11-16

6 1.90 357 2004-06-05

7 2.00 406 2004-10-12

8 2.10 548 2005-06-18

9 2.20 647 2005-12-16

10 2.30 739 2006-05-31

11 2.40 911 2006-12-12

12 2.50 1000 2007-04-12

13 2.60 1300 2007-11-16

14 2.70 1495 2008-03-18

15 2.80 1614 2008-10-20

16 2.90 1907 2009-04-17

17 2.10 2008 2009-10-26

18 2.12 2952 2011-04-06

J Sueur Graphiques

Page 12: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Exemple

plot(date, count)

● ● ●●

●●

●●

●●

●●

●●

2002 2004 2006 2008 2010

050

010

0015

0020

0025

0030

00

date

coun

t

J Sueur Graphiques

Page 13: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Exemple

par(bg = "darkgrey", fg = "white", lwd = 2)

plot(date, count, pch = 20, cex = 2, col = "white", xlab = "Annee",

ylab = "Nombre", main = "Nombre de packages sur le CRAN")

points(date[18], count[18], pch = 20, col = "yellow",

cex = 2)

text(date[18], count[18], pos = 2, label = "6 Avril 2011",

col = "yellow")

lines(lowess(date, count), col = 2, lwd = 2)

J Sueur Graphiques

Page 14: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Exemple

● ● ● ● ●● ●

●●

●●

●●

●●

2002 2004 2006 2008 2010

050

010

0015

0020

0025

0030

00Nombre de packages sur le CRAN

Année

Nom

bre

●6 Avril 2011

J Sueur Graphiques

Page 15: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Base – Des exemples par centaines

http ://addictedtor.free.fr/graphiques/index.php

J Sueur Graphiques

Page 16: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Outline

1 Typologie

2 Base

3 ggplot2

4 References

J Sueur Graphiques

Page 17: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Historique

developpe par Hadley Wickham (Rice University,Houston, USA)

depend principalement des packages reshape etplyr

premiere version : Juin 2007

J Sueur Graphiques

Page 18: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Principes generaux

obeit a de nouveaux principes esthetiques

obeit a une construction particuliere suivant la grammaire graphiquedeveloppee par Wilkinson en 2005

permet une construction rapide de graphiques simples

reduction (considerable) de la longueur des codes

permet la creation de nouvelles familles de graphiques

Nouveau dialecte a apprendre

J Sueur Graphiques

Page 19: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Principes generaux

obeit a de nouveaux principes esthetiques

obeit a une construction particuliere suivant la grammaire graphiquedeveloppee par Wilkinson en 2005

permet une construction rapide de graphiques simples

reduction (considerable) de la longueur des codes

permet la creation de nouvelles familles de graphiques

Nouveau dialecte a apprendre

J Sueur Graphiques

Page 20: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Principes generaux

obeit a de nouveaux principes esthetiques

obeit a une construction particuliere suivant la grammaire graphiquedeveloppee par Wilkinson en 2005

permet une construction rapide de graphiques simples

reduction (considerable) de la longueur des codes

permet la creation de nouvelles familles de graphiques

Nouveau dialecte a apprendre

J Sueur Graphiques

Page 21: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Principes generaux

obeit a de nouveaux principes esthetiques

obeit a une construction particuliere suivant la grammaire graphiquedeveloppee par Wilkinson en 2005

permet une construction rapide de graphiques simples

reduction (considerable) de la longueur des codes

permet la creation de nouvelles familles de graphiques

Nouveau dialecte a apprendre

J Sueur Graphiques

Page 22: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Principes generaux

obeit a de nouveaux principes esthetiques

obeit a une construction particuliere suivant la grammaire graphiquedeveloppee par Wilkinson en 2005

permet une construction rapide de graphiques simples

reduction (considerable) de la longueur des codes

permet la creation de nouvelles familles de graphiques

Nouveau dialecte a apprendre

J Sueur Graphiques

Page 23: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Principes generaux

obeit a de nouveaux principes esthetiques

obeit a une construction particuliere suivant la grammaire graphiquedeveloppee par Wilkinson en 2005

permet une construction rapide de graphiques simples

reduction (considerable) de la longueur des codes

permet la creation de nouvelles familles de graphiques

Nouveau dialecte a apprendre

J Sueur Graphiques

Page 24: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Les calques ou layers

ggplot2 cree des layers (calques) qui peuvent s’utiliser comme desobjets (assignation possible).

Voici les principaux layers :

data → donnees brutesmapping → projection graphiquegeom → objets geometriques (points, lignes, polygones, etc.)stat → transformation statistique (histogramme, modele, etc.)scale → espace esthetique (couleurs, formes, tailes, axes, legendes)coord → systeme de coordonnees (axes, grilles)facet → division

J Sueur Graphiques

Page 25: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Nombre de packages

plot <- qplot(date, count, data = data, geom = c("point",

"smooth"))

plot + xlab("Annees") + ylab("Number of packages") +

annotate("text", x = data[17, 3], y = data[18, 2] +

100, label = "6 Avril 2011", colour = "red")

Années

Num

ber

of p

acka

ges

500

1000

1500

2000

2500

3000

● ●●

●●

●●

●6 Avril 2011

2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011

J Sueur Graphiques

Page 26: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Fonctions de base

ggplot2 a deux fonctions graphiques de base :

- qplot() pour quick plot

rapide mais simple (pour un seul jeu de donnees et une seulemethode esthetique)principe :

qplot(x, y, data=data)

- ggplot()

lent mais plus puissant, ajout de layers avec +

principe :

gplot(data, aes(x, y)) + layers

Remarque

On peut obtenir les memes resultats avec les deux fonctions (equivalence)

J Sueur Graphiques

Page 27: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Objets geometriques (geom)

point → scatterplot (defaut si 2 dimensions)smooth → ajoute une courbe de tendance (lissage) a un scatterplotboxplot → boıte a moustachesjitter → giguepath → chemins entre des points (∀ direction)line → lignes entre des points (de gauche a droite)histogram → histogramme (defaut si 1 dimension)freqpoly → polygone frequentieldensity → courbe de densitebar → batons

J Sueur Graphiques

Page 28: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Categorisation par la couleur

head(diamonds)

carat cut color clarity depth table price x y z

13998 1.01 Ideal G SI1 62.6 56 5698 6.37 6.41 4.00

301 0.77 Ideal I VS1 61.5 59 2798 5.87 5.91 3.62

6816 1.01 Fair D SI1 66.3 55 4118 6.22 6.17 4.11

48416 0.73 Premium F SI2 60.2 59 1971 5.87 5.82 3.52

20812 1.04 Premium G IF 61.3 58 9039 6.52 6.43 3.97

36091 0.32 Very Good F VVS1 61.9 59 926 4.34 4.39 2.70

J Sueur Graphiques

Page 29: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Categorisation par la couleur

qplot(carat, price, data = diamonds, colour = color)

carat

pric

e

5000

10000

15000

●●

●●

●●

●●

● ●

●●

●●

●●

●●● ●

●●

●●

0.5 1.0 1.5 2.0 2.5

color

● D

● E

● F

● G

● H

● I

● J

J Sueur Graphiques

Page 30: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Categorisation par la couleur

qplot(carat, data = diamonds, geom = "histogram", fill = color)

carat

..cou

nt..

0

5

10

15

0.5 1.0 1.5 2.0 2.5

color

D

E

F

G

H

I

J

J Sueur Graphiques

Page 31: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Categorisation par la couleur

qplot(carat, data = diamonds, geom = "density", fill = color,

alpha = I(1/5))

carat

..den

sity

..

0.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

0.5 1.0 1.5 2.0 2.5

color

D

E

F

G

H

I

J

J Sueur Graphiques

Page 32: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Division

Principe : diviser le jeu de donnees en sous-ensembles et creer ungraphique similaire pour chacun sous-ensemble.

Syntaxe : argument facets de qplot selon facteur en ligne ∼facteur en colonne

facets = facteur ∼ . produira un graphique multiple encolonnesfacets = . ∼ facteur produira un graphique multiple en lignes

J Sueur Graphiques

Page 33: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Division

qplot(carat, data = diamonds, facets = color ~ ., geom = "histogram")

carat

..cou

nt..

0123456

0123456

0123456

0123456

0123456

0123456

0123456

0.5 1.0 1.5 2.0 2.5

DE

FG

HI

J

J Sueur Graphiques

Page 34: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Division

data(mpg)

qplot(displ, hwy, data = mpg, geom = c("point", "smooth"),

facets = . ~ year)

displ

hwy

15

20

25

30

35

40

1999

●●

●●●

● ●●

● ●

●● ●

●● ●

●●

● ●●

● ●●●

●●

●●

●●●

● ●

● ●

●●

● ●

●● ●●

●●

●●

●●

●●

●●

●●

2 3 4 5 6 7

2008

●●●

●●

● ●

●●

●●

● ●

● ●

●●

●●

●●●

● ● ●

● ●

●●

●●

●●●● ●●

2 3 4 5 6 7

J Sueur Graphiques

Page 35: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Arguments

ggplot permet, en association avec de produire des graphes pluscomplexes.

ggplot a deux arguments :

- data (donnees dans un data.frame)

- aesthetic mapping (parametres esthetiques de la projection, doiventetre inclus dans la fonction aes())

J Sueur Graphiques

Page 36: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Calques

Voici les principaux layers :

- geom_XXX() (par example : geom_point(), geom_histogramm(),etc.)

- stat_XXX() (par exemple : stat_bin(), stat_smooth(), etc.)

- scale_XXX() (par exemple : scale_x_continuous(),scale_x_log10(), etc.)

- facet_XXX() (par exemple : facet_grid(), facet_wrap(), etc.)

- coord_XXX() (par exemple : coord_flip(), coord_trans(), etc.)

J Sueur Graphiques

Page 37: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Premier calque

p <- ggplot(mpg, aes(displ, hwy, colour = factor(cyl)))

summary(p)

data: manufacturer, model, displ, year, cyl, trans, drv, cty,

hwy, fl, class [234x11]

mapping: x = displ, y = hwy, colour = factor(cyl)

faceting: facet_grid(. ~ ., FALSE)

J Sueur Graphiques

Page 38: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemple d’objet geometrique

p + geom_point() + geom_smooth(method = "lm")

displ

hwy

15

20

25

30

35

40

●●

● ●

●●

●●

●● ●●

●●

●●

●●

●●

●●

●●

●●

● ●●

●●

●● ●●

●●

●●

● ●

●●● ●

●●

●●

●●●

●●

● ●

●●

● ●

●●

●●

●● ●

● ●

●●

●●

● ●

●●

● ●

2 3 4 5 6 7

factor(cyl)

● 4

● 5

● 6

● 8

J Sueur Graphiques

Page 39: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Systemes de coordonnees

p <- ggplot(diamonds, aes(x = "", fill = cut)) + geom_bar(width = 1)

p

..cou

nt..

0

20

40

60

80

100

cut

Fair

Good

Very Good

Premium

Ideal

J Sueur Graphiques

Page 40: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Systemes de coordonnees

p + coord_polar(theta = "y")

..cou

nt..

20

4060

80

0/100

cut

Fair

Good

Very Good

Premium

Ideal

J Sueur Graphiques

Page 41: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Systemes de coordonnees

p <- qplot(cut, price, data = diamonds, geom = "boxplot")

p

cut

pric

e

5000

10000

15000

Fair Good Very Good Premium Ideal

J Sueur Graphiques

Page 42: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Systemes de coordonnees

p + coord_flip()

price

cut

Fair

Good

Very Good

Premium

Ideal

●● ●●

● ●●● ●●

5000 10000 15000

J Sueur Graphiques

Page 43: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Themes

Le theme controle l’apparence globale (police, couleurs).

Il y a deux themes par defaut :

- theme_gray() : fond gris, grille blanche

- theme_bw() : fond blanc, grille grise

J Sueur Graphiques

Page 44: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Themes

Il y a deux manieres de choisir le theme par defaut

- globalement avec theme_set(theme_XXX).

- localement comme un layer avec egalementtheme_set(theme_XXX)

J Sueur Graphiques

Page 45: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Themes

Modification globale pour tous les graphiques suivants en utilisanttheme_update :theme_update(plot.background = theme_rect(fill = "yellow"))

data(movies)

qplot(rating, data = movies, binwidth = 1)

rating

..cou

nt..

0

5000

10000

15000

0 2 4 6 8 10

J Sueur Graphiques

Page 46: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Michael Lavine (UMass Amherst)https ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 47: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Claudia Beleites (TU Dresden & Uni. Trieste)https ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 48: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par David Kahle (Rice University)https ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 49: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Christian Kramer (NIBR Basel)https ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 50: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Jean-Olivier Irisson (JiHO)https ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 51: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Stefan Muthershttps ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 52: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Heike Hofmann (Iowa State University)https ://github.com/hadley/ggplot2/wiki

J Sueur Graphiques

Page 53: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par learnrhttp ://learnr.wordpress.com/

J Sueur Graphiques

Page 55: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

ggplot2 – Exemples

par Winston Changhttp ://wiki.stdout.org/rcookbook

J Sueur Graphiques

Page 56: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

Outline

1 Typologie

2 Base

3 ggplot2

4 References

J Sueur Graphiques

Page 57: Optimiser ses graphiques avec R - Muséum national d

Typologie Base ggplot2 References

References

Graphiques de la base :

Murrell, P. 2005. – R graphics. Chapman & hall / CRC.Page web de P. Murrell :http ://www.stat.auckland.ac.nz/ paul/RGraphics/rgraphics.htmlhttp ://addictedtor.free.fr/graphiques/index.phpGraphic task viewhttp ://cran.at.r-project.org/web/views/Graphics.htmlGraphical model task viewhttp ://cran.at.r-project.org/web/views/gR.html

Graphiques de ggplot2 :

Wilkinson, L. (2005) – The grammar of graphics. Statistics andComputing. SpringerWickman, H. 2009 – ggplot2. Elegant graphics for dataanalysis. Springer.Pageweb : http ://had.co.nz/ggplot2/Page Git : https ://github.com/hadley/ggplot2Groupe de discussion :http ://groups.google.com/group/ggplot2Application web : http ://yeroon.net/ggplot2/

J Sueur Graphiques