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.

lab01-ggplot-intro.html 9.9KB

преди 5 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
  3. <head>
  4. <title>Introduction ggplot2</title>
  5. <meta charset="utf-8" />
  6. <meta name="author" content="Antoine Neuraz" />
  7. <link href="libs/remark-css-0.0.1/default.css" rel="stylesheet" />
  8. <link rel="stylesheet" href="css/my_style.css" type="text/css" />
  9. </head>
  10. <body>
  11. <textarea id="source">
  12. ## ggplot2 implémente la grammaire de la visualisation
  13. ## Les essentiels
  14. ### Data: Données source.
  15. --
  16. ### Geoms: Marques de la visualisation (points, lignes, ...)
  17. --
  18. ### Scales: Echelles de la visualisation (position, taille, couleur,...)
  19. ---
  20. ## ggplot2 implémente la grammaire de la visualisation
  21. ## Les bonus
  22. ### Stats: Opérations de modification des données sources (moyenne, ...)
  23. --
  24. ### Faceting: Découpe le dataset pour créer des sous-graphes
  25. --
  26. ### Coordinates: système de coordonnées de la visualisation
  27. ---
  28. class:
  29. # Architecture d'un graph avec ggplot2
  30. ```r
  31. ggplot(data = &lt;DATA.FRAME&gt;, # chargement des données
  32. aes(x=&lt;VARIABLE1&gt;, # définition des aesthetics (aes)
  33. y=&lt;VARIABLE2&gt;, # = échelles
  34. ...), # grand nombre d'aesthetics existent
  35. ) +
  36. geom_&lt;*&gt;()
  37. ```
  38. ---
  39. # Ressources
  40. ### Reference: [https://ggplot2.tidyverse.org/reference/]()
  41. ### aesthetics: [https://frama.link/tidyverse-aesthetics]()
  42. ---
  43. ## La base
  44. .small[
  45. ```r
  46. data("iris")
  47. ggplot(iris,
  48. aes(x=Sepal.Length,
  49. y=Sepal.Width))
  50. ```
  51. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-2-1.png)&lt;!-- --&gt;
  52. ]
  53. ---
  54. ## Ajouter une geometrie
  55. .small[
  56. ```r
  57. ggplot(iris,
  58. aes(x=Sepal.Length,
  59. y=Sepal.Width)) + # le plus ajoute un layer
  60. * geom_point()
  61. ```
  62. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-3-1.png)&lt;!-- --&gt;
  63. ]
  64. ---
  65. ## Ajouter une géométrie [2]
  66. .small[
  67. ```r
  68. ggplot(iris) +
  69. * geom_point(aes(x=Sepal.Length,
  70. * y=Sepal.Width))
  71. ```
  72. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-4-1.png)&lt;!-- --&gt;
  73. ]
  74. ---
  75. # Ajouter un encodage (aesthetics)
  76. .small[
  77. ```r
  78. ggplot(iris,
  79. aes(x=Sepal.Length,
  80. y=Sepal.Width,
  81. * color = Species)) +
  82. geom_point()
  83. ```
  84. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-5-1.png)&lt;!-- --&gt;
  85. ]
  86. ---
  87. ## Ajouter une 2ème géométrie
  88. .small[
  89. ```r
  90. ggplot(iris,
  91. aes(x=Sepal.Length,
  92. y=Sepal.Width,
  93. color = Species)) +
  94. geom_point() +
  95. * geom_smooth()
  96. ```
  97. ```
  98. ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
  99. ```
  100. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-6-1.png)&lt;!-- --&gt;
  101. ]
  102. ---
  103. ## Régler les options de la géométrie
  104. .small[
  105. ```r
  106. ggplot(iris,
  107. aes(x=Sepal.Length,
  108. y=Sepal.Width,
  109. color = Species)) +
  110. geom_point() +
  111. * geom_smooth(method='lm', se=FALSE)
  112. ```
  113. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-7-1.png)&lt;!-- --&gt;
  114. ]
  115. ---
  116. ## Ajouter une facette
  117. .small[
  118. ```r
  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. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-8-1.png)&lt;!-- --&gt;
  128. ]
  129. ---
  130. ## Régler le thème
  131. .small[
  132. ```r
  133. ggplot(iris,
  134. aes(x=Sepal.Length,
  135. y=Sepal.Width,
  136. color = Species)) +
  137. geom_point() +
  138. geom_smooth(method='lm', se=FALSE) +
  139. facet_grid(~Species) +
  140. * theme_minimal()
  141. ```
  142. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-9-1.png)&lt;!-- --&gt;
  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. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-10-1.png)&lt;!-- --&gt;
  162. ]
  163. ---
  164. ## Ajuster la légende
  165. .small[
  166. ```r
  167. ggplot(iris,
  168. aes(x=Sepal.Length,
  169. y=Sepal.Width,
  170. color = Species)) +
  171. geom_point()+
  172. theme_minimal() +
  173. labs(title = "Sépales des iris",
  174. subtitle = "Longueur et largeur des sépales* en fonction de l'espèce",
  175. x= "Longueur",
  176. y = "Largeur",
  177. caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset"
  178. ) +
  179. * guides(color = guide_legend(title = "Espèce"))
  180. ```
  181. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-11-1.png)&lt;!-- --&gt;
  182. ]
  183. ---
  184. ## Paufiner le thème
  185. .small[
  186. ```r
  187. ggplot(iris,
  188. aes(x=Sepal.Length,
  189. y=Sepal.Width,
  190. color = Species)) +
  191. geom_point()+
  192. theme_minimal() +
  193. labs(title = "Sépales des iris",
  194. subtitle = "Longueur et largeur des sépales* en fonction de l'espèce",
  195. x= "Longueur",
  196. y = "Largeur",
  197. caption = "* Chacune des pièces du calice de la fleur. / source: Iris dataset"
  198. ) +
  199. guides(color = guide_legend(title = "Espèce")) +
  200. * theme(panel.grid.minor = element_blank(),
  201. * legend.position = "bottom")
  202. ```
  203. ![](lab01-ggplot-intro_files/figure-html/unnamed-chunk-12-1.png)&lt;!-- --&gt;
  204. ]
  205. ---
  206. # A l'aide !!!
  207. ### site du tidyverse: [https://ggplot2.tidyverse.org]()
  208. ### R for datascience: [https://r4ds.had.co.nz/]()
  209. ### stackoverfow: [https://stackoverflow.com]()
  210. ### votre moteur de recherche préféré
  211. ---
  212. # TODO
  213. ### Ouvrir le dataset "mtcars"
  214. ### représenter le "Gross horsepower" en fonction du nombre de cylindres
  215. ### utiliser l'encodage multiple sur le nombre de cylindres
  216. ### ajouter l'information du nombre de carburateurs
  217. ### Paufiner le plot (axes, titres, thème)
  218. ---
  219. # TODO 2
  220. ### représenter la distribution du nombre de miles per gallon en histogramme
  221. ### représenter la distribution du nombre de miles per gallon en boxplot
  222. ### representer la distribution du nombre de miles per gallon en fonction du nombre de cylindres
  223. ### ajouter les points par dessus la distribution
  224. ### paufiner le plot (axes, titres, thème)
  225. </textarea>
  226. <style data-target="print-only">@media screen {.remark-slide-container{display:block;}.remark-slide-scaler{box-shadow:none;}}</style>
  227. <script src="https://remarkjs.com/downloads/remark-latest.min.js"></script>
  228. <script src="addons/macros.js"></script>
  229. <script>var slideshow = remark.create({
  230. "ratio": "4:3",
  231. "countIncrementalSlides": false,
  232. "self-contained": true,
  233. "highlightLines": true
  234. });
  235. if (window.HTMLWidgets) slideshow.on('afterShowSlide', function (slide) {
  236. window.dispatchEvent(new Event('resize'));
  237. });
  238. (function(d) {
  239. var s = d.createElement("style"), r = d.querySelector(".remark-slide-scaler");
  240. if (!r) return;
  241. s.type = "text/css"; s.innerHTML = "@page {size: " + r.style.width + " " + r.style.height +"; }";
  242. d.head.appendChild(s);
  243. })(document);
  244. (function(d) {
  245. var el = d.getElementsByClassName("remark-slides-area");
  246. if (!el) return;
  247. var slide, slides = slideshow.getSlides(), els = el[0].children;
  248. for (var i = 1; i < slides.length; i++) {
  249. slide = slides[i];
  250. if (slide.properties.continued === "true" || slide.properties.count === "false") {
  251. els[i - 1].className += ' has-continuation';
  252. }
  253. }
  254. var s = d.createElement("style");
  255. s.type = "text/css"; s.innerHTML = "@media print { .has-continuation { display: none; } }";
  256. d.head.appendChild(s);
  257. })(document);
  258. // delete the temporary CSS (for displaying all slides initially) when the user
  259. // starts to view slides
  260. (function() {
  261. var deleted = false;
  262. slideshow.on('beforeShowSlide', function(slide) {
  263. if (deleted) return;
  264. var sheets = document.styleSheets, node;
  265. for (var i = 0; i < sheets.length; i++) {
  266. node = sheets[i].ownerNode;
  267. if (node.dataset["target"] !== "print-only") continue;
  268. node.parentNode.removeChild(node);
  269. }
  270. deleted = true;
  271. });
  272. })();
  273. // adds .remark-code-has-line-highlighted class to <pre> parent elements
  274. // of code chunks containing highlighted lines with class .remark-code-line-highlighted
  275. (function(d) {
  276. const hlines = d.querySelectorAll('.remark-code-line-highlighted');
  277. const preParents = [];
  278. const findPreParent = function(line, p = 0) {
  279. if (p > 1) return null; // traverse up no further than grandparent
  280. const el = line.parentElement;
  281. return el.tagName === "PRE" ? el : findPreParent(el, ++p);
  282. };
  283. for (let line of hlines) {
  284. let pre = findPreParent(line);
  285. if (pre && !preParents.includes(pre)) preParents.push(pre);
  286. }
  287. preParents.forEach(p => p.classList.add("remark-code-has-line-highlighted"));
  288. })(document);</script>
  289. <script>
  290. (function() {
  291. var links = document.getElementsByTagName('a');
  292. for (var i = 0; i < links.length; i++) {
  293. if (/^(https?:)?\/\//.test(links[i].getAttribute('href'))) {
  294. links[i].target = '_blank';
  295. }
  296. }
  297. })();
  298. </script>
  299. <script>
  300. slideshow._releaseMath = function(el) {
  301. var i, text, code, codes = el.getElementsByTagName('code');
  302. for (i = 0; i < codes.length;) {
  303. code = codes[i];
  304. if (code.parentNode.tagName !== 'PRE' && code.childElementCount === 0) {
  305. text = code.textContent;
  306. if (/^\\\((.|\s)+\\\)$/.test(text) || /^\\\[(.|\s)+\\\]$/.test(text) ||
  307. /^\$\$(.|\s)+\$\$$/.test(text) ||
  308. /^\\begin\{([^}]+)\}(.|\s)+\\end\{[^}]+\}$/.test(text)) {
  309. code.outerHTML = code.innerHTML; // remove <code></code>
  310. continue;
  311. }
  312. }
  313. i++;
  314. }
  315. };
  316. slideshow._releaseMath(document);
  317. </script>
  318. <!-- dynamically load mathjax for compatibility with self-contained -->
  319. <script>
  320. (function () {
  321. var script = document.createElement('script');
  322. script.type = 'text/javascript';
  323. script.src = 'https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML';
  324. if (location.protocol !== 'file:' && /^https?:/.test(script.src))
  325. script.src = script.src.replace(/^https?:/, '');
  326. document.getElementsByTagName('head')[0].appendChild(script);
  327. })();
  328. </script>
  329. </body>
  330. </html>