420 likes | 677 Views
BOGART Emilie SANCHEZ Mélodie SANCHEZ Sarah VIDAL Mathilde YOKESSA Maïmouna. A la découverte du package ggplot2. Module R 2013-2014 Professeur référent : Julie Josse. Généralités sur ggplot2. Package développé par Hadley Wickham (Rice University, Houston, USA)
E N D
BOGART Emilie SANCHEZ Mélodie SANCHEZ Sarah VIDAL Mathilde YOKESSA Maïmouna A la découverte du package ggplot2 Module R 2013-2014 Professeur référent : Julie Josse
Généralités sur ggplot2 • 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 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
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) ) + layer1 + layer2+…+layer n base ensemble de calques
Les layers de la fonction ggplot • Annotation • Fortify • Theme • Plot creation • Aesthetics • Others • Geoms • Statistics • Scales • Coordinatesystems • Faceting • Position adjustements
Le layer geom_(x) Créé pour les objets géométriques comme les points, lignes, polygones…
Geom_point Le nuage de points d+geom_point() Trace le nuage de points d+geom_point(aes(colour = factor(cut))) Ajoute une couleur selon les modalités de cut d+geom_point(aes(shape = factor(cut))) Ajoute une forme selon les modalités cut 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()
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)) 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
Effectif/densité • Stat_bin: Histogramme des effectifs de chaque modalité de la variable qualitative ggplot(diamonds,aes(x=diamonds$color))+stat_bin(fill="yellow")
Effectif/densité • Stat_density: Fonction de densité de la variable quantitative ggplot(diamonds,aes(x=diamonds$carat))+stat_density(fill="red")
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)
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)
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)))
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)
Contour de y : Stat_contour • Stat_contour: trace des lignes de niveau ggplot(volcano3d, aes(x, y, z = z)) + stat_contour(binwidth = 5,color="brown")
Le layer facet_(x) divise le jeu de données en sous-ensembles et crée un graphique similaire pour chacun des sous-ensembles.
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)oulabeller = label_bquote(race (x))
Faced_wrap • ggplot(jambon,aes(globale,gras))+ geom_point()+ facet_wrap(~race)
Le layer anotation_(x) Permet d’ajouter du texte ou des formes sur les graphiques
Annotate(« text » et « rect ») D4<-d3 + annotate("text",x=c(1, 3, 5), y=c(4000,4000,4000), label=c("clair","moyen","foncé"), colour="red", size=5) D4 + annotate("rect", xmin=3.5, xmax=4.5, ymin=9500, ymax=12000, alpha=0.3, colour="red")
Annotate (« segment» et «pointrange ») D4<-d3+ annotate("segment", x=4.5, xend= 7.5, y=11000, yend=3000, colour="orange", size=3) d4+ annotate("pointrange",x=2, y=9800, ymin=7800, ymax=11800, colour="purple")
Le layer coord_(x) Permet différentes options sur le système de coordonnées des graphiques
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
Coord_cartesian() Scale ()
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
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))
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)
y/x = 1 y/x = 3 1 unité de Y 3 unités de X
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()
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") qplot(a, ea, data = dfa, geom = "line") + coord_trans(x = "identity", y= "log") ggplot(dfa, aes(a,ea)) + geom_line() ggplot(dfa, aes(a,ea)) + geom_line() + coord_trans(x = "identity", y= "exp")
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)
Scale_alpha p <- qplot(mpg, cyl, data = mtcars,alpha=cyl) p + scale_alpha("number\nof\ncylinders") p <- qplot(mpg, cyl, data=mtcars, alpha = factor(cyl)))
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))
Scale_x_datetime qplot(day30, 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"))
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.ggplot2.org/current/ ggmag + ggplot2