Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Production de graphiques avec R et ggplot2

Etienne
March 07, 2013

Production de graphiques avec R et ggplot2

votre premier graphique dans R › nuagedepointsdebase
› Défi1
› la grammaires des graphiques
› graphiquesplusavancés
› lesélémentsgraphiquesdisponibles › Défi2
› sauvegarder ses graphiques
› finitions de vos graphiques (préparation à la
publication)
› thèmes(themes)
› nous vous aidons à mettre vos données dans un superbe graphique

Etienne

March 07, 2013
Tweet

More Decks by Etienne

Other Decks in Science

Transcript

  1. Production de
    graphiques avec
    R et ggplot2
    Etienne Low-Decarie
    matériel en partie préparé
    par Eric Pederson

    View Slide

  2. www.meetup.com/Montreal-R-User-Group/
    Montreal-R-User-Group
    Joignez vous à un groupe d’utilisateurs dynamiques et bilingues!

    View Slide

  3. View Slide

  4. Et vous?
    ›  Avez-vous déjà créé un graphique?
    ›  Avec quel type de données?
    ›  Quel type de graphique?
    ›  Dans quel logiciel?
    ›  Avez-vous déjà produit des graphiques
    avec R?
    ›  avec ggplot?

    View Slide

  5. Suivez nous
    ›  Code disponible sur
    ›  http://github.com/zerotorhero/
    Intro_R_CSBQ_Francais
    ›  Recommandation
    ›  créez votre propre script
    ›  vous référer à notre script qu’en cas
    d’extrême besoin
    ›  ggplot est aussi hébergé sur github
    ›  https://github.com/hadley/ggplot2

    View Slide

  6. Librairie/extension
    requise
    ›  install.packages(ggplot2)
    ›  require(ggplot2)

    View Slide

  7. Agenda
    ›  votre premier graphique dans R
    ›  nuage de points de base
    ›  Défi 1
    ›  la grammaires des graphiques
    ›  graphiques plus avancés
    ›  les éléments graphiques disponibles
    ›  Défi 2
    ›  sauvegarder ses graphiques
    ›  finitions de vos graphiques (préparation à la
    publication)
    ›  thèmes (themes)
    ›  nous vous aidons à mettre vos données dans un
    superbe graphique

    View Slide

  8. ggplot
    ›  observer l’ensemble de données «iris»
    ›  ?iris!
    ›  head(iris)!
    ›  str(iris)!
    ›  names(iris)!
    Les données que nous allons
    utiliser

    View Slide

  9. ggplot
    ›  la fonction graphique de base:
    “qplot” (quick plot)
    ›  ?qplot
    ›  arguments!
    ›  data!
    ›  x!
    ›  y!
    ›  …!
    Nuage de points de base

    View Slide

  10. ggplot
    Nuage de points de base
    (variables continues)
    qplot(data=iris,!
    x=Sepal.Length,!
    y=Sepal.Width)!
    !
    ! ! !

    View Slide

  11. ggplot
    Nuage de points de base
    (variable catégorique)
    qplot(data=iris,!
    x=Species,!
    !y=Sepal.Width)

    View Slide

  12. ggplot
    ›  ?qplot
    ›  other arguments!
    ›  xlab!
    ›  ylab!
    ›  main!
    ›  log!
    ›  …!
    Un nuage de points un peu plus
    sophistiqué

    View Slide

  13. ggplot
    Nuage de points
    qplot(data=iris,!
    x=Sepal.Length,!
    xlab="Sepal Width (mm)",!
    y=Sepal.Width,!
    !ylab="Sepal Length (mm)",!
    !main="Sepal dimensions”)!

    View Slide

  14. ggplot
    Défi 1
    ›  produire un graphique de base avec
    l’ensemble de données «CO2»!
    ›  CO2!
    ›  ?CO2!
    ›  BOD!
    ›  data()!

    View Slide

  15. 6 H. WICKHAM
    Figure 1. Graphics objects produced by (from left to right): geometric objects, scales and coordinate system,
    plot annotations.
    Figure 2. The final graphic, produced by combining the pieces in Figure 1.
    ggplot
    1.  comme les mots d’une phrase, un
    graphiques est composé d’élément
    (couches: layers) qu’il faut agencer en
    suivant les règles d’une grammaire
    ›  éléments
    ›  esthétiques (aes)
    ›  transformation
    ›  géométriques (geom)
    ›  axes (coordinate system)
    ›  échelles (scales)
    La grammaires des graphiques(gg)

    View Slide

  16. ggplot
    La grammaires des graphiques(gg)
    correspondances esthétiques (aes) rendent les
    données visibles et relient les démentions/variables à
    une valeur visible
    ›  x,y : la position le long de l'axe x et y
    ›  colour: la coleur du point
    ›  group: regroupement des valeurs
    ›  shape: le symbole utilisé
    ›  linetype: le type de ligne
    ›  size: la grandeur du point ou l’épaisseur de la ligne
    ›  alpha: le niveau de transparence

    View Slide

  17. ggplot
    ›  objet géométrique (geoms)
    ›  point: nuage de points
    ›  line: tracé linéaire, où les lignes relient en ordre
    croissant de la valeur de x
    ›  path: tracé linéaire, où les lignes relient les valeurs
    dans l’ordre qu’elles apparaisse dans la trame de
    données
    ›  boxplot:
    ›  bar: graphiques à colonne
    ›  histogram: histogramme (choix par défaut lorsqu’une
    seule dimension/variable est donnée)
    La grammaires des graphiques(gg)

    View Slide

  18. ggplot
    2. comme changer un mot dans une phrase,
    changer un élément produit un nouveau graphique
    ›  il n’est pas nécessaire de réitérer tous les autres
    éléments)
    ›  eg. il suffit de changer le système de coordonnées pour obtenir
    un tout nouveau graphique!
    La grammaires des graphiques(gg)
    A LAYERED GRAMMAR OF GRAPHICS 23
    Figure 16. Bar chart (left) and equivalent Coxcomb plot (right) of clarity distribution. The Coxcomb plot is a
    bar chart in polar coordinates. Note that the categories abut in the Coxcomb, but are separated in the bar chart:
    this is an example of a graphical convention that differs in different coordinate systems.

    View Slide

  19. ggplot
    La grammaires des graphiques
    Grammar of graphics (gg)

    View Slide

  20. ggplot
    1.  créer un objet graphique simple
    ›  plot.object<-qplot()!
    2.  ajouter des éléments/de la complexité
    ›  plot.object<-plot.object+layer()!
    ›  repeat step 2 until satisfied!
    3.  imprimer l’objet à l’écran ou vers un
    dispositif graphique (eg. pdf)
    ›  print(plot.object)!
    Fonctionnement

    View Slide

  21. ggplot
    Graphique dans un objet dans
    R
    basic.plot<-qplot(data=iris,!
    ! ! !x=Sepal.Length,!
    ! ! !xlab="Sepal Width (mm)",!
    ! ! !y=Sepal.Width,!
    ! ! !ylab="Sepal Length (mm)",!
    ! ! !main="Sepal dimensions”)!
    !
    print(basic.plot)!

    View Slide

  22. ggplot
    Nuage de points de base
    (variable catégorique)
    categorical.plot<-qplot(data=iris,!
    x=Species,!
    !y=Sepal.Width)!
    print(categorical.plot)

    View Slide

  23. ggplot
    Nuage de points avec encodage par
    couleurs, forme et la transparence
    ›  Ajouter un élément esthétique
    basic.plot<-qplot(data=iris,!
    x=Sepal.Length,!
    xlab="Sepal Width (mm)",!
    y=Sepal.Width,!
    ylab="Sepal Length (mm)",!
    main="Sepal dimensions",!
    colour=Species,!
    shape=Species,!
    alpha=I(0.5))!
    !
    print(basic.p!
    ! ! !print(basic.plot)!

    View Slide

  24. ggplot
    Nuage de points avec
    régression linéaire
    ›  Ajouter un élément géométrique (geom)
    plot.with.linear.smooth<-basic.plot+!
    ! ! !geom_smooth(method="lm", se=F)!
    print(plot.with.linear.smooth)!

    View Slide

  25. ggplot
    Changer ou ajouter des éléments
    géométriques (geom)
    print(categorical.plot)!
    !
    print(categorical.plot+!
    ! !geom_boxplot())!
    !
    categorical.plot<-qplot(data=iris,!
    x=Species,!
    !y=Sepal.Width,!
    !geom=c(“boxplot”))!
    print(categorical.plot)
    !

    View Slide

  26. ggplot
    Défi 2
    ›  produire un graphique coloré
    incluant des lignes représentant
    des régressions linéaires avec des
    données intégrées à R!
    ›  CO2!
    ›  ?CO2!
    ›  msleep!
    ›  ?msleep!
    ›  OrchardSprays!
    ›  data()!

    View Slide

  27. ggplot
    Graphique de base 2
    CO2.plot<-qplot(data=CO2,!
    x=conc,!
    y=uptake,!
    colour=Treatment)!
    !
    print(CO2.plot)!

    View Slide

  28. ggplot
    Facettes (Facets)
    plot.object<-plot.object + facet_grid(rows~columns)!
    !
    CO2.plot<-CO2.plot+facet_grid(.~Type)!
    print(CO2.plot)!

    View Slide

  29. ggplot
    Problème avec les regroupement
    de données (Groups)
    ›  ajoutez un élément géométrique: geom
    (line)
    print(CO2.plot+geom_line())!

    View Slide

  30. ggplot
    Regroupement de données
    (Groups)
    ›  Spécifier les regroupements
    CO2.plot<-CO2.plot+geom_line(aes(group=Plant))!
    print(CO2.plot)!

    View Slide

  31. Éléments disponibles
    ggplot
    Geoms
    Geoms, short for geometric objects, describe the type of plot you will produce.
    geom_abline
    Line specified by slope and intercept.
    geom_area
    Area plot.
    geom_bar
    Bars, rectangles with bases on x-axis
    geom_bin2d
    Add heatmap of 2d bin counts.
    geom_blank
    Blank, draws nothing.
    geom_boxplot
    Box and whiskers plot.
    geom_contour
    Display contours of a 3d surface in 2d.
    geom_crossbar
    Hollow bar with middle indicated by horizontal line.
    geom_density
    Display a smooth density estimate.
    geom_density2d
    Contours from a 2d density estimate.
    geom_dotplot
    Dot plot
    geom_errorbar
    Error bars.
    geom_errorbarh
    Horizontal error bars
    geom_freqpoly
    Frequency polygon.
    geom_hex
    Hexagon bining.
    geom_histogram
    Histogram
    geom_hline
    Horizontal line.
    geom_jitter
    Points, jittered to reduce overplotting.
    geom_line
    Connect observations, ordered by x value.
    geom_linerange
    An interval represented by a vertical line.
    geom_map
    Polygons from a reference map.
    geom_path
    Connect observations in original order
    geom_point
    Points, as for a scatterplot
    geom_pointrange
    Depends: stats, methods
    Imports: plyr, digest, grid, gtable,
    reshape2, scales, proto, MASS
    Suggests: quantreg, Hmisc, mapproj,
    maps, hexbin, maptools, multcomp, nlme,
    testthat
    Extends:
    http://docs.ggplot2.org!
    !
    une autre source d’aide:!
    help(package=ggplot2)!

    View Slide

  32. Défi 3
    ggplot
    ›  Explorer «geoms» et d’autres éléments
    graphiques avec les données que vous avez
    déjà utilisées
    ›  msleep!
    ›  ?msleep!
    ›  OrchardSprays!
    ›  data()!

    View Slide

  33. ggplot
    Sauvegarder des graphiques
    ›  Dans RStudio

    View Slide

  34. ggplot
    Sauvegarder un graphique
    ›  dans un script
    pdf(“./plots/todays_plots.pdf”)
    print(basic.plot)
    print(plot.with.linear.smooth)
    print(categorical.plot)
    print(CO2.plot)!
    graphics.off()!
    !
    ›  d’autres méthodes
    ›  ?ggsave
    ›  ?jpeg

    View Slide

  35. ggplot
    Finition: les échelles (scales)
    CO2.plot+scale_colour_manual(values=c("nonchilled"="red",!
    ! ! ! ! !"chilled"="blue"))!
    !
    CO2.plot+!
    scale_y_continuous(name = "CO2 uptake rate",!
    !breaks = seq(5,50, by= 10),!
    !labels = seq(5,50, by= 10), trans="log10") !
    !
    !
    aesthetic type d’échelle
    fonction composée d’éléments relié par _

    View Slide

  36. ggplot
    Travailler avec vos données
    ›  Partez d’ici avec au moins
    un graphique de vos
    données
    ›  Vous n’avez pas de
    données
    ›  Touvez en:
    ›  google
    ›  http://datadryad.org
    ›  Créez en:
    ›  Faites un sondage de vos
    voisins
    ›  Sauvegarder vos
    graphiques dans un PDF

    View Slide

  37. ggplot
    Finition :
    les thèmes (themes)
    ›  theme_set(theme())
    ›  ou plot+theme()
    ›  thèmes disponibles
    ›  theme_bw()
    ›  theme_grey()
    ›  modifiez les thèmes
    ›  mytheme <- theme_grey() +
    theme(plot.title = element_text(colour = "red"))
    ›  p + mytheme
    ›  Un jour les périodiques scientifique auront peut-
    être leur propre thème?

    View Slide

  38. ggplot
    fonction graphique
    de base de R
    ›  qplot n’est pas la seule fonction
    ›  ?plot
    ›  plusieurs type d’objet on des
    graphiques établis par défaut
    ›  grammaire similaire à qplot
    plot(iris)
    lm.SR <- lm(sr ~ pop15 + pop75 + dpi
    + ddpi, data = LifeCycleSavings)
    plot(lm.SR)

    View Slide

  39. Remerciements
    ›  Reshape, plyr and ggplot2 sont hébergé sur GitHub par:
    ›  Hadley Wickham
    ›  had.co.nz
    Wickham, H. (2011). "The split-apply-
    combine strategy for data analysis."
    Journal of Statis.
    Wickham, H. (2010). "A layered
    grammar of graphics." Journal of
    Computational and Graphical
    Statistics 19(1): 3-28.

    View Slide

  40. Remerciements
    ›  Une partie du matériel a été préparé par
    Eric Pederson

    View Slide