25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

298 satır
5.5KB

  1. ---
  2. title: "Introduction ggplot2"
  3. author: "Antoine Neuraz"
  4. date: "18/11/2019"
  5. output:
  6. xaringan::moon_reader:
  7. css: ['default','css/my_style.css']
  8. lib_dir: libs
  9. seal: false
  10. nature:
  11. ratio: '4:3'
  12. countIncrementalSlides: false
  13. self-contained: true
  14. beforeInit: "addons/macros.js"
  15. highlightLines: true
  16. pdf_document:
  17. seal: false
  18. ---
  19. ```{r setup, include=FALSE}
  20. knitr::opts_chunk$set(echo = TRUE, fig.asp= .5)
  21. library(ggplot2)
  22. ```
  23. ## ggplot2 implémente la grammaire de la visualisation
  24. ## Les essentiels
  25. ### Data: Données source.
  26. --
  27. ### Geoms: Marques de la visualisation (points, lignes, ...)
  28. --
  29. ### Scales: Echelles de la visualisation (position, taille, couleur,...)
  30. ---
  31. ## ggplot2 implémente la grammaire de la visualisation
  32. ## Les bonus
  33. ### Stats: Opérations de modification des données sources (moyenne, ...)
  34. --
  35. ### Faceting: Découpe le dataset pour créer des sous-graphes
  36. --
  37. ### Coordinates: système de coordonnées de la visualisation
  38. ---
  39. class:
  40. # Architecture d'un graph avec ggplot2
  41. ```{r, eval = FALSE}
  42. ggplot(data = <DATA.FRAME>, # chargement des données
  43. aes(x=<VARIABLE1>, # définition des aesthetics (aes)
  44. y=<VARIABLE2>, # = échelles
  45. ...), # grand nombre d'aesthetics existent
  46. ) +
  47. geom_<*>()
  48. ```
  49. ---
  50. # Ressources
  51. ### Reference: [https://ggplot2.tidyverse.org/reference/]()
  52. ### aesthetics: [https://frama.link/tidyverse-aesthetics]()
  53. ---
  54. ## La base
  55. .small[
  56. ```{r, fig.asp=0.7}
  57. data("iris")
  58. ggplot(iris,
  59. aes(x=Sepal.Length,
  60. y=Sepal.Width))
  61. ```
  62. ]
  63. ---
  64. ## Ajouter une geometrie
  65. .small[
  66. ```{r, fig.asp=0.7}
  67. ggplot(iris,
  68. aes(x=Sepal.Length,
  69. y=Sepal.Width)) + # le plus ajoute un layer
  70. geom_point() #<<
  71. ```
  72. ]
  73. ---
  74. ## Ajouter une géométrie [2]
  75. .small[
  76. ```{r, fig.asp=0.7}
  77. ggplot(iris) +
  78. geom_point(aes(x=Sepal.Length, #<<
  79. y=Sepal.Width)) #<<
  80. ```
  81. ]
  82. ---
  83. # Ajouter un encodage (aesthetics)
  84. .small[
  85. ```{r, fig.asp=0.7}
  86. ggplot(iris,
  87. aes(x=Sepal.Length,
  88. y=Sepal.Width,
  89. color = Species)) + #<<
  90. geom_point()
  91. ```
  92. ]
  93. ---
  94. ## Ajouter une 2ème géométrie
  95. .small[
  96. ```{r, fig.asp=0.7}
  97. ggplot(iris,
  98. aes(x=Sepal.Length,
  99. y=Sepal.Width,
  100. color = Species)) +
  101. geom_point() +
  102. geom_smooth() #<<
  103. ```
  104. ]
  105. ---
  106. ## Régler les options de la géométrie
  107. .small[
  108. ```{r, fig.asp=0.7}
  109. ggplot(iris,
  110. aes(x=Sepal.Length,
  111. y=Sepal.Width,
  112. color = Species)) +
  113. geom_point() +
  114. geom_smooth(method='lm', se=FALSE) #<<
  115. ```
  116. ]
  117. ---
  118. ## Ajouter une facette
  119. .small[
  120. ```{r, fig.asp=0.7}
  121. ggplot(iris,
  122. aes(x=Sepal.Length,
  123. y=Sepal.Width,
  124. color = Species)) +
  125. geom_point() +
  126. geom_smooth(method='lm', se=FALSE) +
  127. facet_grid(~Species) #<<
  128. ```
  129. ]
  130. ---
  131. ## Régler le thème
  132. .small[
  133. ```{r, fig.asp=0.7}
  134. ggplot(iris,
  135. aes(x=Sepal.Length,
  136. y=Sepal.Width,
  137. color = Species)) +
  138. geom_point() +
  139. geom_smooth(method='lm', se=FALSE) +
  140. facet_grid(~Species) +
  141. theme_minimal() #<<
  142. ```
  143. ]
  144. ---
  145. ## Régler les titres et labels
  146. .small[
  147. ```{r}
  148. ggplot(iris,
  149. aes(x=Sepal.Length,
  150. y=Sepal.Width,
  151. color = Species)) +
  152. geom_point()+
  153. theme_minimal() +
  154. labs(title = "Sépales des iris", #<<
  155. subtitle = "Longueur et largeur des sépales* en fonction de l'espèce", #<<
  156. x= "Longueur", #<<
  157. y = "Largeur", #<<
  158. caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset" #<<
  159. ) #<<
  160. ```
  161. ]
  162. ---
  163. ## Ajuster la légende
  164. .small[
  165. ```{r}
  166. ggplot(iris,
  167. aes(x=Sepal.Length,
  168. y=Sepal.Width,
  169. color = Species)) +
  170. geom_point()+
  171. theme_minimal() +
  172. labs(title = "Sépales des iris",
  173. subtitle = "Longueur et largeur des sépales* en fonction de l'espèce",
  174. x= "Longueur",
  175. y = "Largeur",
  176. caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset"
  177. ) +
  178. guides(color = guide_legend(title = "Espèce")) #<<
  179. ```
  180. ]
  181. ---
  182. ## Paufiner le thème
  183. .small[
  184. ```{r}
  185. ggplot(iris,
  186. aes(x=Sepal.Length,
  187. y=Sepal.Width,
  188. color = Species)) +
  189. geom_point()+
  190. theme_minimal() +
  191. labs(title = "Sépales des iris",
  192. subtitle = "Longueur et largeur des sépales* en fonction de l'espèce",
  193. x= "Longueur",
  194. y = "Largeur",
  195. caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset"
  196. ) +
  197. guides(color = guide_legend(title = "Espèce")) +
  198. theme(panel.grid.minor = element_blank(), #<<
  199. legend.position = "bottom") #<<
  200. ```
  201. ]
  202. ---
  203. # A l'aide !!!
  204. ### site du tidyverse: [https://ggplot2.tidyverse.org]()
  205. ### R for datascience: [https://r4ds.had.co.nz/]()
  206. ### stackoverfow: [https://stackoverflow.com]()
  207. ### votre moteur de recherche préféré
  208. ---
  209. # TODO
  210. ### Ouvrir le dataset "mtcars"
  211. ### représenter le "Gross horsepower" en fonction du nombre de cylindres
  212. ### utiliser l'encodage multiple sur le nombre de cylindres
  213. ### ajouter l'information du nombre de carburateurs
  214. ### Paufiner le plot (axes, titres, thème)
  215. ---
  216. # TODO 2
  217. ### représenter la distribution du nombre de miles per gallon en histogramme
  218. ### représenter la distribution du nombre de miles per gallon en boxplot
  219. ### representer la distribution du nombre de miles per gallon en fonction du nombre de cylindres
  220. ### ajouter les points par dessus la distribution
  221. ### paufiner le plot (axes, titres, thème)