Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa...

10
Présentation de ggplot2 Eric Matzner-Lober Présentation de ggplot2 ggplot2 a été développé par Hadley Wickham comme une implémentation de [Grammar of Graphics] C’est un package relativement complet et puissant. Il peut faire énormément de chose, mais pas de 3D. Les données Nous allons travailler sur les données “Diamonds Data” livrées avec le package ggplot2 • Environ 54000 diamants de forme ronde • Source : http://www.diamondse.info/ • 10 variables : carat, cut, color, clarity, depth, table, price, x, y, z • Pour l’ensemble de l’aide et de la documentation : http://ggplot2.org/ library(ggplot2) data(diamonds) str(diamonds) ## data.frame: 53940 obs. of 10 variables: ## $ carat : num 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ... ## $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ... ## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ... ## $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ... ## $ depth : num 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ... ## $ table : num 55 61 65 58 58 57 57 55 61 61 ... ## $ price : int 326 326 327 334 335 336 336 337 337 338 ... ## $x : num 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ... ## $y : num 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ... ## $z : num 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ... La grammaire des graphes Data : Les variables à afficher Aesthetics mapping : Les dimensions selon lesquelles les données sont représentées Geometries : Formes utilisées pour représenter les données Facets : Tableau (lignes et colonnes) de graphes Statistics : Modèles ou transformations statistiques des données Coordinates : L’espace de représentation (horizontal, vertical, cartésien, polaire) Scales : L’échelle des axes (linéaire, logarithmique, à l’envers), les couleurs de remplissage Thèmes : Description de l’arrière plan Qu’est ce qu’un graphique ? • Un ensemble de couches 1

Transcript of Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa...

Page 1: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

Présentation de ggplot2Eric Matzner-Lober

Présentation de ggplot2

ggplot2 a été développé par Hadley Wickham comme une implémentation de [Grammar of Graphics] C’estun package relativement complet et puissant. Il peut faire énormément de chose, mais pas de 3D.

Les données

Nous allons travailler sur les données “Diamonds Data” livrées avec le package ggplot2

• Environ 54000 diamants de forme ronde• Source : http://www.diamondse.info/• 10 variables : carat, cut, color, clarity, depth, table, price, x, y, z• Pour l’ensemble de l’aide et de la documentation : http://ggplot2.org/

library(ggplot2)data(diamonds)str(diamonds)

## 'data.frame': 53940 obs. of 10 variables:## $ carat : num 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...## $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...## $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...## $ depth : num 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...## $ table : num 55 61 65 58 58 57 57 55 61 61 ...## $ price : int 326 326 327 334 335 336 336 337 337 338 ...## $ x : num 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...## $ y : num 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...## $ z : num 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

La grammaire des graphes

• Data : Les variables à afficher• Aesthetics mapping : Les dimensions selon lesquelles les données sont représentées• Geometries : Formes utilisées pour représenter les données• Facets : Tableau (lignes et colonnes) de graphes• Statistics : Modèles ou transformations statistiques des données• Coordinates : L’espace de représentation (horizontal, vertical, cartésien, polaire)• Scales : L’échelle des axes (linéaire, logarithmique, à l’envers), les couleurs de remplissage• Thèmes : Description de l’arrière plan

Qu’est ce qu’un graphique ?

• Un ensemble de couches

1

Page 2: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

• Un ensemble d’échelles de dimensions (linéaire, logarithmique, . . . )• Un système de coordonnées (XY, polaire, . . . )• Une disposition (si plusieurs graphes)

Implémentation de cette grammaire dans ggplot2

• Data• Aesthetic mapping : aes()• Geometries : geom• Statistics : stat

Une aide précieuse : Lorsque vous écrivez vos graphes, reportez vous à la Cheat Sheet ggplot2. En 2pages, elle présente l’ensemble des fonctionnalités de bases que vous pouvez combiner !

https://www.rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf

Le principe en schéma

Geometries

Les geoms définissent les formes des éléments du graphes.

• Formes basiques : geom_point(), geom_line(), geom_polygon(), geom_bar(), geom_text()• Formes composites : geom_boxplot(), geom_pointrange()• Formes attachées à des objets statistiques : geom_histogram(), geom_smooth(), geom_density()

Statistics

Au lieu de représenter les données brutes, nous pouvons représenter une transformation des données :utilisation de la famille de fonction stat_*().

Représentation univariée

Variable quantitative : histogramme, densité, points

ggplot(diamonds, aes(carat)) + geom_histogram()

2

Page 3: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

0

2500

5000

7500

0 2 4carat

coun

t

ggplot(diamonds, aes(carat)) + geom_density()

0.0

0.5

1.0

1.5

0 1 2 3 4 5carat

dens

ity

Variable quantitative

ggplot(diamonds, aes(cut)) + geom_bar()

0

5000

10000

15000

20000

Fair Good Very Good Premium Idealcut

coun

t

3

Page 4: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

Représentation bivariée

Quanti * quali

ggplot(diamonds, aes(x=cut, y=price)) + geom_boxplot()

0

5000

10000

15000

Fair Good Very Good Premium Idealcut

pric

e

Quanti * quanti

ggplot(diamonds, aes(x=carat, y=price)) + geom_point()

0

5000

10000

15000

0 1 2 3 4 5carat

pric

e

Exemple : Scatter plot avec couleurs venant d’une variable quanti

ggplot(diamonds, aes(x=carat, y=price)) + geom_point() + geom_point(aes(colour = carat))

4

Page 5: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

0

5000

10000

15000

0 1 2 3 4 5carat

pric

e

1

2

3

4

5carat

Exemple : Scatter plot avec couleurs venant d’une variable quali

ggplot(diamonds, aes(x=carat, y=price)) + geom_point() + geom_point(aes(colour = cut))

0

5000

10000

15000

0 1 2 3 4 5carat

pric

e

cut

Fair

Good

Very Good

Premium

Ideal

Exemple de grouping

ggplot(diamonds, aes(x = price, color = cut)) + geom_density()

5

Page 6: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

0e+00

1e−04

2e−04

3e−04

4e−04

0 5000 10000 15000price

dens

itycut

Fair

Good

Very Good

Premium

Ideal

ggplot(diamonds, aes(x = price, color = cut)) + geom_density() + facet_wrap(~ cut)

Fair Good Very Good

Premium Ideal0e+001e−042e−043e−044e−04

0e+001e−042e−043e−044e−04

0 50001000015000 0 50001000015000price

dens

ity

cut

Fair

Good

Very Good

Premium

Ideal

Que se passe t-il ?

ggplot(diamonds, aes(x=price)) + geom_histogram()

ggplot(diamonds, aes(x=price)) + stat_bin(geom="area")

ggplot(diamonds, aes(x=price)) + stat_bin(geom="point")

ggplot(diamonds, aes(x=price)) + geom_histogram(aes(fill = clarity))

Les paramètres

Les paramètres modifient l’apparence des geoms et les opérations des statistics :

6

Page 7: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

• geom_smooth(method=lm)• stat_bin(binwidth = 100)• stat_summary(fun="mean_cl_boot")• geom_boxplot(outlier.colour = "red")• geom_point(colour = "red", size = 5)• geom_line(linetype = 3)

Pour représenter un sous-ensemble de points ainsi qu’une courbe de lissage :

ggplot(diamonds[sample(nrow(diamonds), size = 1000),],aes(x = carat, y = price)) +stat_smooth() + geom_point()

0

5000

10000

15000

20000

1 2carat

pric

e

Les échelles (scales)

Les scales permettent de changer la manière dont est représentée une dimension. On peut par exemple :

• Représenter un axes en échelle logarithmique• Changer les limites des axes• Changer les breaks qui sont représentés sur l’axe• Changer les labels• Changer les couleurs

b <- ggplot(diamonds, aes(x=clarity))b + geom_bar(aes(fill = clarity)) + scale_fill_brewer() + scale_y_log10()

7

Page 8: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

10

1000

I1 SI2 SI1 VS2 VS1 VVS2 VVS1 IFclarity

coun

tclarity

I1

SI2

SI1

VS2

VS1

VVS2

VVS1

IF

Facetting

Lorsque l’on dispose de données multivariées, il est utile d’afficher dans une même fenêtre graphique plusieursgraphes correpondants aux différents sous-ensembles.

p <- ggplot(diamonds, aes(x = carat, y = price)) + geom_point()# With one variablep + facet_grid(. ~ cut) + geom_smooth(method=lm)

Fair Good Very Good Premium Ideal

0

10000

20000

30000

0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5carat

pric

e

Coordinates

Le système de coordonnées permet de contrôler comment les deux dimensions comprises dans aes(x = , y= ) sont reliées. Par défaut, c’est le système de coordonées cartésiennes (X, Y)

Les autres types de coordonées :

• coord_flip()• coord_map()• coord_polar()

8

Page 9: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

Themes

Les thèmes définissent l’arrière-plan.

ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point() + theme_bw()

2

3

4

5

10 15 20 25 30 35mpg

wt

ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point() + theme(panel.background = element_blank())

2

3

4

5

10 15 20 25 30 35mpg

wt

Le package ggthemes permet de choisir différents background.

require(ggthemes)

Parallel Coordinates and Radar Plots

# rescale all variables to lie between 0 and 1scaled <- as.data.frame(lapply(mtcars, ggplot2:::rescale01))scaled$model <- rownames(mtcars) # add model names as a variablemtcarsm <- reshape2::melt(scaled)

9

Page 10: Présentation de ggplot2 · Hornet 4 Drive Hornet SportaboutLincoln Continental Lotus Europa Maserati Bora Mazda RX4 Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

## Using model as id variables

ggplot(mtcarsm, aes(x = variable, y = value)) +geom_line(aes(group = model, color = model), fill = NA, size = 2) +theme(strip.text.x = element_text(size = rel(0.8)),

axis.text.x = element_blank(),axis.ticks.y = element_blank(),axis.text.y = element_blank()) +

guides(color = "none") + facet_wrap(~ model)

AMC Javelin Cadillac Fleetwood Camaro Z28 Chrysler Imperial Datsun 710 Dodge Challenger

Duster 360 Ferrari Dino Fiat 128 Fiat X1−9 Ford Pantera L Honda Civic

Hornet 4 Drive Hornet Sportabout Lincoln Continental Lotus Europa Maserati Bora Mazda RX4

Mazda RX4 Wag Merc 230 Merc 240D Merc 280 Merc 280C Merc 450SE

Merc 450SL Merc 450SLC Pontiac Firebird Porsche 914−2 Toyota Corolla Toyota Corona

Valiant Volvo 142E

variable

valu

e

coord_radar <- function(...) {structure(coord_polar(...), class = c("radar", "polar", "coord"))

}is.linear.radar <- function(coord) TRUE

10