You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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