BOGART Emilie SANCHEZ Mlodie SANCHEZ Sarah VIDAL Mathilde
BOGART Emilie SANCHEZ Mélodie SANCHEZ Sarah VIDAL Mathilde YOKESSA Maïmouna A la découverte du package ggplot 2 Module R 2013 -2014 Professeur référent : Julie Josse
Généralités sur ggplot 2 • Package développé par Hadley Wickham (Rice University, Houston, USA) • première version : Juin 2007 • obéit `a une construction particulière suivant la grammaire graphique • permet une construction rapide de graphiques simples • réduction de la longueur des codes 2
2 fonctions de base : • qplot(x, y, data=data) : pour quick plot • rapide d’exécution mais applicable pour un seul jeu de données • ggplot(data, aes(x, y) ) • plus lent mais plus puissant • on inclut les paramètres esthétiques dans la fonction aes on peut ajouter des layers avec un « + » Dans la suite, on va exposer la fonction ggplot 3
Premier calque Il faut que le jeu de données soit de type data frame On ajoute les layers avec un « + » ggplot(data, aes(x, y) ) + layer 1 + layer 2+…+layer n base ensemble de calques 4
Les layers de la fonction ggplot • • • Geoms Statistics Scales Coordinate systems Faceting Position adjustements • • • 5 Annotation Fortify Theme Plot creation Aesthetics Others
Le layer geom_(x) Créé pour les objets géométriques comme les points, lignes, polygones… 6
Geom_point Le nuage de points d+geom_point() Trace le nuage de points d+geom_point(aes(shape = factor(cut))) Ajoute une forme selon les modalités cut d+geom_point(aes(colour = factor(cut))) Ajoute une couleur selon les modalités de cut 7 d+geom_point(aes(colour = factor(color))) Ajoute une couleur selon les modalités de color
Geom_line Relier les points entre eux data(economics) e=ggplot(economics, aes(x=date, y=pop)) e+ geom_line() 8
Geom_line Relier les points entre eux m <- ggplot(mry, aes(x=year, y=number, group=rating)) m + geom_line() m <- ggplot(mry, aes(x=year, y=number, group=rating)) m + geom_line(aes(colour = rating)) 9 On a compté le nombre de films par rating (=classement) en fonction des années
Le layer stat_(x) Créé différents types de graphiques statistiques 10
Effectif/densité • Stat_bin: Histogramme des effectifs de chaque modalité de la variable qualitative ggplot(diamonds, aes(x=diamonds$color))+stat_bin(fill="yellow") 11
Effectif/densité • Stat_density: Fonction de densité de la variable quantitative ggplot(diamonds, aes(x=diamonds$carat))+stat_density(fill="red") 12
Courbe de tendance : Stat_smooth level=0. 5 level=0. 95 • Niveau de confiance : • ggplot(diamonds, aes(x=carat, y=price))+geom_point(aes(colour = factor(cut)))+ stat_smooth(method= "auto", fill="blue", colour="darkblue", size=2, level=0. 5) 13
Courbe de tendance : : Stat_smooth • Méthode d’ajustement : ggplot(diamonds, aes(x=log(carat), y=log(price)))+geom_point(aes(colour = factor(cut)))+ stat_smooth(method="lm", fill="blue", colour="darkblue", size=2, level=0. 95) 14
Boxplot : Stat_boxplot • Stat_boxplot : fait un boxplot pour chaque modalité de la variable qualitative ggplot(diamonds, aes(x=cut, y=price))+stat_boxplot(aes(colour=factor(cut))) 15
Résumé des valeurs de Y : stat_summary • Moyenne: stat_summary(fun. data="mean_cl_normal", colour="red") • Ecart-type: stat_summary(fun. data="mean_sdl", colour="blue", size=1) 16
Contour de y : Stat_contour • Stat_contour: trace des lignes de niveau ggplot(volcano 3 d, aes(x, y, z = z)) + stat_contour(binwidth = 5, color="brown") 17
Stat_(x) = geom_(x) 18
Le layer facet_(x) divise le jeu de données en sous-ensembles et crée un graphique similaire pour chacun des sous-ensembles. 19
Facet_grid + label_both • gauche<-ggplot(jambon, aes(globale, gras))+ geom_point()+ facet_grid(. ~race, labeller = label_both) droite<-ggplot(jambon, aes(globale, gras))+ geom_point()+ facet_grid(race~. , labeller = label_both) ou labeller = label_bquote(race (x)) 20
Faced_wrap • ggplot(jambon, aes(globale, gras))+ geom_point()+ facet_wrap(~race) 21
Le layer anotation_(x) Permet d’ajouter du texte ou des formes sur les graphiques 22
Annotate( « text » et « rect » ) D 4<-d 3 + annotate("text", x=c(1, 3, 5), y=c(4000, 4000), label=c("clair", "moyen", "foncé"), colour="red", size=5) D 4 + annotate("rect", xmin=3. 5, xmax=4. 5, ymin=9500, ymax=12000, alpha=0. 3, colour="red") 23
Annotate ( « segment» et «pointrange » ) D 4<-d 3+ annotate("segment", x=4. 5, xend= 7. 5, y=11000, yend=3000, colour="orange", size=3) d 4+ annotate("pointrange", x=2, y=9800, ymin=7800, ymax=11800, colour="purple") 24
Le layer coord_(x) Permet différentes options sur le système de coordonnées des graphiques 25
coord_cartesian • Utilisation : fixer des limites permet de « zoomer » sur une partie du graphe • Exemple : p <- qplot(disp, wt, data=mtcars)+ geom_smooth() p + coord_cartesian(xlim = c(325, 500)) • Remarque : autre layer permettant de zoomer : «scale » p + scale_x_continuous(limits = c(325, 500)) Mais zoom différent 26
Coord_cartesian() Scale () 27
coord_map • Library( mapproj ) • Exemple : world <- map_data("world") worldmap <- ggplot(world, aes(x=long, y=lat, group=group)) + geom_path() # coordonnées cartesiennes + coord_map() #projection de mercantor : plane + coord_map("ortho") #pole nord + coord_map("ortho", orientation=c(-90, 0, 0)) #pole sud 28
Coordonnées cartésiennes geom_path() Projection de Mercantor coord_map() Projection orthogonale Pôle Nord coord_map("ortho") Pôle Sud orientation=c(-90, 0, 0)) 29
coord_fixed Permet de fixer l’échelle des axes grâce au ratio y/x Exemple : data(mtcars) qplot(mpg, wt, data = mtcars)+ coord_fixed(ratio = 1) qplot(mpg, wt, data = mtcars)+ coord_fixed(ratio = 3) 30
y/x = 1 y/x = 3 1 unité de Y 3 unités de X 31
coord_flip • passage d’une représentation horizontale à verticale et inversement • Exemple : data(diamonds) qplot(cut, price, data=diamonds, geom="boxplot")+ coord_flip() • Remarque : coord_flip = Facet_grid + label_both p<-ggplot(diamonds, aes(cut, price)) + geom_boxplot() p + coord_flip() 32
33 coord_flip()
coord_trans • Transforme les axes par la fonction voulue • Exemple : ea = exp(a) dfa = data. frame(a) dfa = cbind. data. frame(a, ea) qplot(a, ea, data = dfa, geom = "line") + coord_trans(x = "identity", y= "log") ggplot(dfa, aes(a, ea)) + geom_line() + coord_trans(x = "identity", y= "exp") 34
+ coord_trans(x = "identity", y= "log") 35
Le layer scales_(x) Permet de modifier, à partir d’une large gamme d’options, l’espace esthétique des graphiques (couleurs, formes, tailes, axes, legendes) 36
Scale_alpha p <- qplot(mpg, cyl, data = mtcars, alpha=cyl) p + scale_alpha("numbernofncylinders") p <- qplot(mpg, cyl, data=mtcars, alpha = factor(cyl))) 37
Scale_colour et scale_fil_continous dsub <- subset(diamonds, x > 5 & x < 6 & y > 5 & y < 6) d <- qplot(x, y, data=dsub, colour=z))) d + scale_colour_gradient(limits=c(3, 4), low="red", high="white") h <- qplot(x - y, data=dsub, geom="histogram", binwidth=0. 01, fill=. . count. . ) h + scale_fill_continuous(low="black", high="pink", limits=c(0, 3100)) 38
Scale_x_datetime qplot(day 30, y, data = df) last_plot() + scale_x_datetime(breaks = date_break ("2 days"), labels =date_format("%d/%m")) last_plot() + scale_x_datetime(breaks = date_breaks ("7 day"), minor_breaks = date_breaks("12 hour")) 39
Conclusion Facilité de construction de graphiques complexes On peut facilement supprimer ou ajouter des layers Langage intuitif Utilisation de différents layers pour un même résultat Plus aller plus loin … http: //docs. ggplot 2. org/current/ 40 ggmag + ggplot 2
Merci de votre attention ! 41
- Slides: 41