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 anni fa
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. \documentclass[]{book}
  2. \usepackage{lmodern}
  3. \usepackage{amssymb,amsmath}
  4. \usepackage{ifxetex,ifluatex}
  5. \usepackage{fixltx2e} % provides \textsubscript
  6. \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  7. \usepackage[T1]{fontenc}
  8. \usepackage[utf8]{inputenc}
  9. \else % if luatex or xelatex
  10. \ifxetex
  11. \usepackage{mathspec}
  12. \else
  13. \usepackage{fontspec}
  14. \fi
  15. \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
  16. \fi
  17. % use upquote if available, for straight quotes in verbatim environments
  18. \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
  19. % use microtype if available
  20. \IfFileExists{microtype.sty}{%
  21. \usepackage{microtype}
  22. \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
  23. }{}
  24. \usepackage[margin=1in]{geometry}
  25. \usepackage{hyperref}
  26. \hypersetup{unicode=true,
  27. pdftitle={Visualisation de données avec R},
  28. pdfauthor={Antoine Neuraz},
  29. pdfborder={0 0 0},
  30. breaklinks=true}
  31. \urlstyle{same} % don't use monospace font for urls
  32. \usepackage{natbib}
  33. \bibliographystyle{apalike}
  34. \usepackage{color}
  35. \usepackage{fancyvrb}
  36. \newcommand{\VerbBar}{|}
  37. \newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
  38. \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
  39. % Add ',fontsize=\small' for more characters per line
  40. \usepackage{framed}
  41. \definecolor{shadecolor}{RGB}{248,248,248}
  42. \newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
  43. \newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
  44. \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
  45. \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
  46. \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
  47. \newcommand{\BuiltInTok}[1]{#1}
  48. \newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
  49. \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
  50. \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
  51. \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
  52. \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
  53. \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
  54. \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
  55. \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
  56. \newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
  57. \newcommand{\ExtensionTok}[1]{#1}
  58. \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
  59. \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
  60. \newcommand{\ImportTok}[1]{#1}
  61. \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
  62. \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
  63. \newcommand{\NormalTok}[1]{#1}
  64. \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
  65. \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
  66. \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
  67. \newcommand{\RegionMarkerTok}[1]{#1}
  68. \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
  69. \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
  70. \newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
  71. \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
  72. \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
  73. \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
  74. \usepackage{longtable,booktabs}
  75. \usepackage{graphicx,grffile}
  76. \makeatletter
  77. \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
  78. \def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
  79. \makeatother
  80. % Scale images if necessary, so that they will not overflow the page
  81. % margins by default, and it is still possible to overwrite the defaults
  82. % using explicit options in \includegraphics[width, height, ...]{}
  83. \setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
  84. \IfFileExists{parskip.sty}{%
  85. \usepackage{parskip}
  86. }{% else
  87. \setlength{\parindent}{0pt}
  88. \setlength{\parskip}{6pt plus 2pt minus 1pt}
  89. }
  90. \setlength{\emergencystretch}{3em} % prevent overfull lines
  91. \providecommand{\tightlist}{%
  92. \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
  93. \setcounter{secnumdepth}{5}
  94. % Redefines (sub)paragraphs to behave more like sections
  95. \ifx\paragraph\undefined\else
  96. \let\oldparagraph\paragraph
  97. \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
  98. \fi
  99. \ifx\subparagraph\undefined\else
  100. \let\oldsubparagraph\subparagraph
  101. \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
  102. \fi
  103. %%% Use protect on footnotes to avoid problems with footnotes in titles
  104. \let\rmarkdownfootnote\footnote%
  105. \def\footnote{\protect\rmarkdownfootnote}
  106. %%% Change title format to be more compact
  107. \usepackage{titling}
  108. % Create subtitle command for use in maketitle
  109. \providecommand{\subtitle}[1]{
  110. \posttitle{
  111. \begin{center}\large#1\end{center}
  112. }
  113. }
  114. \setlength{\droptitle}{-2em}
  115. \title{Visualisation de données avec R}
  116. \pretitle{\vspace{\droptitle}\centering\huge}
  117. \posttitle{\par}
  118. \author{Antoine Neuraz}
  119. \preauthor{\centering\large\emph}
  120. \postauthor{\par}
  121. \predate{\centering\large\emph}
  122. \postdate{\par}
  123. \date{2019-06-05}
  124. \usepackage{booktabs}
  125. \begin{document}
  126. \maketitle
  127. {
  128. \setcounter{tocdepth}{1}
  129. \tableofcontents
  130. }
  131. Cours introductif à la visualisation de données avec R. Ce cours a pour but d introduire les concepts théoriques de base en visualisation ainsi que des exemples concrets.
  132. \hypertarget{prerequis}{%
  133. \chapter*{Prerequis}\label{prerequis}}
  134. \addcontentsline{toc}{chapter}{Prerequis}
  135. Pour les parties théoriques, aucun prérequis n'est nécessaire. Les exemples pratiques sont conçus avec le logiciel R et le package \texttt{ggplot2}
  136. \hypertarget{installer-r}{%
  137. \section*{Installer R}\label{installer-r}}
  138. \addcontentsline{toc}{section}{Installer R}
  139. Vous devez avoir installé le logiciel R pour pouvoir suivre les exemples pratiques.
  140. Vous trouverez les liens de téléchargement ici : \href{}{https://cran.r-project.org}
  141. \hypertarget{installer-rstudio-facultatif}{%
  142. \section*{Installer RStudio (facultatif)}\label{installer-rstudio-facultatif}}
  143. \addcontentsline{toc}{section}{Installer RStudio (facultatif)}
  144. Nous conseillons également d'installer l'interface de développement (IDE) RStudio qui vous facilitera les choses pour la prévisualisation des contenus et des rendus. Bien entendu, si vous avez déjà une IDE préférée, vous pouvez continuer à l'utiliser. Vous trouverez la RStudio Desktop en version open source (gratuite) ici : \href{}{https://www.rstudio.com/products/rstudio/\#Desktop}
  145. \hypertarget{installer-les-packages-necessaires}{%
  146. \section*{Installer les packages nécessaires}\label{installer-les-packages-necessaires}}
  147. \addcontentsline{toc}{section}{Installer les packages nécessaires}
  148. Dans ce cours, un certain nombre de packages sont utilisés très fréquement et doivent être installés :
  149. \begin{Shaded}
  150. \begin{Highlighting}[]
  151. \NormalTok{pkg_list_req =}\StringTok{ }\KeywordTok{c}\NormalTok{(}\StringTok{"tidyverse"}\NormalTok{,}
  152. \StringTok{"ggplot2"}\NormalTok{,}
  153. \StringTok{"see"}\NormalTok{)}
  154. \end{Highlighting}
  155. \end{Shaded}
  156. \begin{Shaded}
  157. \begin{Highlighting}[]
  158. \KeywordTok{install.packages}\NormalTok{(pkg_list_req)}
  159. \end{Highlighting}
  160. \end{Shaded}
  161. Un certain nombre d'autres packages, utilisés plus ponctuellement vous seront indiqués dans les différents chapitres. Voici une liste exhaustive des packages utilisés dans ce cours :
  162. tidyverse, ggplot2, see
  163. \hypertarget{intro}{%
  164. \chapter{Intro}\label{intro}}
  165. \begin{figure}
  166. {\centering \includegraphics{dataviz_files/figure-latex/encode-1}
  167. }
  168. \caption{Exemples d'encodage}\label{fig:encode}
  169. \end{figure}
  170. \hypertarget{mappings-in-ggplot}{%
  171. \section{Mappings in ggplot}\label{mappings-in-ggplot}}
  172. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-14-1.pdf}
  173. figure from \href{}{https://serialmentor.com/dataviz/aesthetic-mapping.html}
  174. \hypertarget{scales-in-ggplot}{%
  175. \section{scales in ggplot}\label{scales-in-ggplot}}
  176. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-15-1.pdf}
  177. figure from \href{}{https://serialmentor.com/dataviz/aesthetic-mapping.html}
  178. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-16-1.pdf}
  179. \hypertarget{ggplot2-techniques-avancees}{%
  180. \chapter{\texorpdfstring{\texttt{ggplot2} : techniques avancées}{ggplot2 : techniques avancées}}\label{ggplot2-techniques-avancees}}
  181. \hypertarget{creer-son-propre-theme-ggplot2}{%
  182. \section{\texorpdfstring{Créer son propre thème \texttt{ggplot2}}{Créer son propre thème ggplot2}}\label{creer-son-propre-theme-ggplot2}}
  183. Les thèmes de \texttt{ggplot2} permettent de contrôler l'apparence des plots. Il est possible de modifier un thème standard en utilisant la fonction \texttt{theme()}. Mais nous allons voir ici comment créer un thème personalisé.
  184. Il est bien entendu possible de créer un thème de toutes pièces. Pour cela, il faut définir un à un tous les éléments possibles du thème mais c'est très long et rébarbatif. Dans \texttt{ggplot2}, le seul thème défini de cette façon est le thème de base \texttt{theme\_grey()} (voir le \href{https://github.com/tidyverse/ggplot2/blob/master/R/theme-defaults.r}{repo officiel}).
  185. Les autres thèmes héritent les attribut de ce premier thème et modifient uniquement éléments nécéssaires. Par exemple, \texttt{theme\_bw()} est construit à partir de \texttt{theme\_grey()} et \texttt{theme\_minimal()} se base sur \texttt{theme\_bw()}. C'est beaucoup plus pratique de définir les thèmes de cette façon.
  186. \hypertarget{un-theme-est-une-fonction}{%
  187. \subsection{un thème est une fonction}\label{un-theme-est-une-fonction}}
  188. Un thème est une fonction R classique qui prend comme arguments 4 variables :
  189. - base\_size : taille de base du texte (défaut = 11)
  190. - base\_family : famille de polices de base (défaut = "")
  191. - base\_line\_size : taille de base des éléments \texttt{line} (défaut = base\_size / 22 )
  192. - base\_rect\_size : taille de base des éléments \texttt{rect} (défault = base\_size / 22 )
  193. \begin{Shaded}
  194. \begin{Highlighting}[]
  195. \NormalTok{my_theme <-}\StringTok{ }\ControlFlowTok{function}\NormalTok{(}\DataTypeTok{base_size =} \DecValTok{11}\NormalTok{,}
  196. \DataTypeTok{base_family =} \StringTok{""}\NormalTok{,}
  197. \DataTypeTok{base_line_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{,}
  198. \DataTypeTok{base_rect_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{) \{\}}
  199. \end{Highlighting}
  200. \end{Shaded}
  201. \hypertarget{modifier-un-theme-de-base-avec-replace}{%
  202. \subsection{\texorpdfstring{modifier un thème de base avec \texttt{\%+replace\%}}{modifier un thème de base avec \%+replace\%}}\label{modifier-un-theme-de-base-avec-replace}}
  203. Ensuite, nous allons choisir un thème de base duquel notre thème personalisé va hériter les éléments par défaut. En effet, tous les éléments que nous ne spécifieront pas seront basés sur le thème de base. Par exemple, nous pouvons choisir \texttt{theme\_minimal()}.
  204. Pour modifier les éléments du thème de base, il faut utiliser l'opérateur \texttt{\%+replace\%} suivi de la fonction \texttt{theme()}. C'est dans cette dernière que nous pourrons spécifier les différents éléments à modifier par rapport au thème de base.
  205. \begin{Shaded}
  206. \begin{Highlighting}[]
  207. \NormalTok{my_theme <-}\StringTok{ }\ControlFlowTok{function}\NormalTok{(}\DataTypeTok{base_size =} \DecValTok{11}\NormalTok{,}
  208. \DataTypeTok{base_family =} \StringTok{""}\NormalTok{,}
  209. \DataTypeTok{base_line_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{,}
  210. \DataTypeTok{base_rect_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{) \{}
  211. \KeywordTok{theme_minimal}\NormalTok{(}\DataTypeTok{base_size =}\NormalTok{ base_size, }
  212. \DataTypeTok{base_family =}\NormalTok{ base_family,}
  213. \DataTypeTok{base_line_size =}\NormalTok{ base_line_size,}
  214. \DataTypeTok{base_rect_size =}\NormalTok{ base_rect_size) }\OperatorTok{%+replace%}
  215. \StringTok{ }\KeywordTok{theme}\NormalTok{(}
  216. \CommentTok{# éléments à modifier}
  217. \NormalTok{ )}
  218. \NormalTok{\}}
  219. \end{Highlighting}
  220. \end{Shaded}
  221. \hypertarget{definir-de-nouveaux-attributs}{%
  222. \subsection{définir de nouveaux attributs}\label{definir-de-nouveaux-attributs}}
  223. Nous pouvons a présent inserer dans la fonction thème les éléments à modifier. Notez qu'il ne faut pas utiliser de tailles absolues mais définir des tailles relatives avec la fonction \texttt{rel()}.
  224. \hypertarget{my_theme}{%
  225. \subsubsection*{\texorpdfstring{\texttt{my\_theme()}}{my\_theme()}}\label{my_theme}}
  226. \addcontentsline{toc}{subsubsection}{\texttt{my\_theme()}}
  227. Voici un exemple de thème personnalisé (très fortement inspiré du thème \texttt{theme\_modern()} du package \texttt{see}) basé sur \texttt{theme\_minimal()} :
  228. \begin{Shaded}
  229. \begin{Highlighting}[]
  230. \NormalTok{my_theme <-}\StringTok{ }\ControlFlowTok{function}\NormalTok{(}\DataTypeTok{base_size =} \DecValTok{11}\NormalTok{,}
  231. \DataTypeTok{base_family =} \StringTok{""}\NormalTok{,}
  232. \DataTypeTok{base_line_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{,}
  233. \DataTypeTok{base_rect_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{) \{}
  234. \NormalTok{ half_line <-}\StringTok{ }\NormalTok{base_size}\OperatorTok{/}\DecValTok{2}
  235. \KeywordTok{theme_minimal}\NormalTok{(}\DataTypeTok{base_size =}\NormalTok{ base_size, }
  236. \DataTypeTok{base_family =}\NormalTok{ base_family,}
  237. \DataTypeTok{base_line_size =}\NormalTok{ base_line_size,}
  238. \DataTypeTok{base_rect_size =}\NormalTok{ base_rect_size) }\OperatorTok{%+replace%}
  239. \StringTok{ }\KeywordTok{theme}\NormalTok{(}
  240. \CommentTok{## Panel grid ##}
  241. \DataTypeTok{panel.border =} \KeywordTok{element_blank}\NormalTok{(), }
  242. \DataTypeTok{panel.grid.major =} \KeywordTok{element_blank}\NormalTok{(), }
  243. \DataTypeTok{panel.grid.minor =} \KeywordTok{element_blank}\NormalTok{(), }
  244. \CommentTok{## Title ##}
  245. \DataTypeTok{plot.title =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(}\FloatTok{1.3}\NormalTok{), }
  246. \DataTypeTok{face =} \StringTok{"plain"}\NormalTok{, }\DataTypeTok{margin =} \KeywordTok{margin}\NormalTok{(}\DecValTok{0}\NormalTok{, }\DecValTok{0}\NormalTok{, }\DecValTok{20}\NormalTok{, }\DecValTok{0}\NormalTok{)),}
  247. \CommentTok{## Axis ##}
  248. \DataTypeTok{axis.line =} \KeywordTok{element_line}\NormalTok{(}\DataTypeTok{colour =} \StringTok{"black"}\NormalTok{, }\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(}\FloatTok{0.5}\NormalTok{)), }
  249. \DataTypeTok{axis.title.y =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{margin =} \KeywordTok{margin}\NormalTok{(}\DataTypeTok{t =} \DecValTok{0}\NormalTok{, }\DataTypeTok{r =} \KeywordTok{rel}\NormalTok{(}\DecValTok{20}\NormalTok{), }\DataTypeTok{b =} \DecValTok{0}\NormalTok{, }\DataTypeTok{l =} \DecValTok{0}\NormalTok{),}
  250. \DataTypeTok{angle =} \DecValTok{90}\NormalTok{), }
  251. \DataTypeTok{axis.title.x =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{margin =} \KeywordTok{margin}\NormalTok{(}\DataTypeTok{t =} \KeywordTok{rel}\NormalTok{(}\DecValTok{20}\NormalTok{), }\DataTypeTok{r =} \DecValTok{0}\NormalTok{, }\DataTypeTok{b =} \DecValTok{0}\NormalTok{, }\DataTypeTok{l =} \DecValTok{0}\NormalTok{)), }
  252. \DataTypeTok{axis.title =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(}\FloatTok{1.2}\NormalTok{), }
  253. \DataTypeTok{face =} \StringTok{"plain"}\NormalTok{), }
  254. \DataTypeTok{axis.text =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(.}\DecValTok{8}\NormalTok{)), }
  255. \DataTypeTok{axis.ticks =} \KeywordTok{element_blank}\NormalTok{(), }
  256. \CommentTok{## Legend ##}
  257. \DataTypeTok{legend.key =} \KeywordTok{element_blank}\NormalTok{(), }
  258. \DataTypeTok{legend.position =} \StringTok{"bottom"}\NormalTok{,}
  259. \DataTypeTok{legend.text =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(}\FloatTok{1.1}\NormalTok{)), }
  260. \DataTypeTok{legend.title =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(}\FloatTok{1.1}\NormalTok{)), }
  261. \DataTypeTok{legend.spacing.x =} \KeywordTok{unit}\NormalTok{(}\DecValTok{2}\NormalTok{, }\StringTok{"pt"}\NormalTok{), }
  262. \CommentTok{## Background ##}
  263. \DataTypeTok{strip.background =} \KeywordTok{element_blank}\NormalTok{(), }
  264. \DataTypeTok{plot.tag =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{size =} \KeywordTok{rel}\NormalTok{(}\FloatTok{1.3}\NormalTok{), }\DataTypeTok{face =} \StringTok{"bold"}\NormalTok{), }
  265. \DataTypeTok{strip.text =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{face =} \StringTok{"bold"}\NormalTok{)}
  266. \NormalTok{ ) }
  267. \NormalTok{\}}
  268. \end{Highlighting}
  269. \end{Shaded}
  270. \hypertarget{my_theme_dark}{%
  271. \subsubsection*{\texorpdfstring{\texttt{my\_theme\_dark()}}{my\_theme\_dark()}}\label{my_theme_dark}}
  272. \addcontentsline{toc}{subsubsection}{\texttt{my\_theme\_dark()}}
  273. Et un thème sombre basé sur \texttt{my\_theme()} et très fortement inspiré de \texttt{theme\_blackboard()} du package \texttt{see} :
  274. \begin{Shaded}
  275. \begin{Highlighting}[]
  276. \NormalTok{my_theme_dark <-}\ControlFlowTok{function}\NormalTok{(}\DataTypeTok{base_size =} \DecValTok{11}\NormalTok{,}
  277. \DataTypeTok{base_family =} \StringTok{""}\NormalTok{,}
  278. \DataTypeTok{base_line_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{,}
  279. \DataTypeTok{base_rect_size =}\NormalTok{ base_size }\OperatorTok{/}\StringTok{ }\DecValTok{22}\NormalTok{) \{}
  280. \NormalTok{ dark_color =}\StringTok{ "#0d0d0d"}
  281. \NormalTok{ light_color =}\StringTok{ "#E0E0E0"}
  282. \KeywordTok{my_theme}\NormalTok{(}\DataTypeTok{base_size =}\NormalTok{ base_size, }
  283. \DataTypeTok{base_family =}\NormalTok{ base_family,}
  284. \DataTypeTok{base_line_size =}\NormalTok{ base_line_size,}
  285. \DataTypeTok{base_rect_size =}\NormalTok{ base_rect_size) }\OperatorTok{%+replace%}
  286. \StringTok{ }
  287. \StringTok{ }\KeywordTok{theme}\NormalTok{(}
  288. \CommentTok{## Backgrounds ##}
  289. \DataTypeTok{plot.background =} \KeywordTok{element_rect}\NormalTok{(}\DataTypeTok{fill =}\NormalTok{ dark_color), }
  290. \DataTypeTok{panel.background =} \KeywordTok{element_rect}\NormalTok{(}\DataTypeTok{fill =}\NormalTok{ dark_color, }\DataTypeTok{color=}\NormalTok{dark_color), }
  291. \DataTypeTok{legend.background =} \KeywordTok{element_rect}\NormalTok{(}\DataTypeTok{fill =}\NormalTok{ dark_color, }\DataTypeTok{color=}\NormalTok{dark_color),}
  292. \CommentTok{## Lines ##}
  293. \DataTypeTok{axis.line =} \KeywordTok{element_line}\NormalTok{(}\DataTypeTok{color =}\NormalTok{ light_color),}
  294. \CommentTok{## Text ##}
  295. \DataTypeTok{text =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{family =}\NormalTok{ base_family, }\DataTypeTok{face =} \StringTok{"plain"}\NormalTok{,}
  296. \DataTypeTok{color =}\NormalTok{ light_color, }\DataTypeTok{size =}\NormalTok{ base_size,}
  297. \DataTypeTok{hjust =} \FloatTok{0.5}\NormalTok{, }\DataTypeTok{vjust =} \FloatTok{0.5}\NormalTok{, }\DataTypeTok{angle =} \DecValTok{0}\NormalTok{, }
  298. \DataTypeTok{lineheight =}\FloatTok{0.9}\NormalTok{, }\DataTypeTok{margin =} \KeywordTok{margin}\NormalTok{(), }
  299. \DataTypeTok{debug =} \OtherTok{FALSE}\NormalTok{),}
  300. \DataTypeTok{axis.text =} \KeywordTok{element_text}\NormalTok{(}\DataTypeTok{color =}\NormalTok{ light_color)}
  301. \NormalTok{ )}
  302. \NormalTok{\}}
  303. \end{Highlighting}
  304. \end{Shaded}
  305. \hypertarget{exemple}{%
  306. \subsection{Exemple}\label{exemple}}
  307. Créons un plot d'exemple à partir d'un jeu de données synthétique
  308. \begin{Shaded}
  309. \begin{Highlighting}[]
  310. \NormalTok{p <-}\StringTok{ }\KeywordTok{generate_uniform_dataset}\NormalTok{(}
  311. \DataTypeTok{dataset_size =} \DecValTok{100}\NormalTok{,}
  312. \DataTypeTok{min_x =} \DecValTok{0}\NormalTok{, }\DataTypeTok{max_x =} \DecValTok{1}\NormalTok{,}
  313. \DataTypeTok{outliers =} \DecValTok{2}\NormalTok{, }\DataTypeTok{seed =} \DecValTok{506}
  314. \NormalTok{) }\OperatorTok{%>%}
  315. \StringTok{ }\KeywordTok{ggplot}\NormalTok{(}\DataTypeTok{data =}\NormalTok{ ., }\KeywordTok{aes}\NormalTok{( }\DataTypeTok{x =}\NormalTok{ x, }\DataTypeTok{y =}\NormalTok{ y, }\DataTypeTok{color =}\NormalTok{ group)) }\OperatorTok{+}
  316. \StringTok{ }\KeywordTok{geom_point}\NormalTok{(}\DataTypeTok{size =} \DecValTok{3}\NormalTok{) }\OperatorTok{+}
  317. \StringTok{ }\KeywordTok{scale_color_material_d}\NormalTok{() }\OperatorTok{+}
  318. \StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=} \StringTok{"theme_minimal()"}\NormalTok{, }
  319. \DataTypeTok{x=}\StringTok{"legende axe x"}\NormalTok{, }
  320. \DataTypeTok{y=}\StringTok{"legende axe y"}\NormalTok{)}
  321. \end{Highlighting}
  322. \end{Shaded}
  323. \begin{Shaded}
  324. \begin{Highlighting}[]
  325. \NormalTok{p }
  326. \end{Highlighting}
  327. \end{Shaded}
  328. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-23-1.pdf}
  329. \begin{Shaded}
  330. \begin{Highlighting}[]
  331. \NormalTok{p }\OperatorTok{+}\StringTok{ }\KeywordTok{theme_minimal}\NormalTok{() }
  332. \end{Highlighting}
  333. \end{Shaded}
  334. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-24-1.pdf}
  335. \begin{Shaded}
  336. \begin{Highlighting}[]
  337. \NormalTok{p }\OperatorTok{+}\StringTok{ }\KeywordTok{my_theme}\NormalTok{()}
  338. \end{Highlighting}
  339. \end{Shaded}
  340. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-25-1.pdf}
  341. \begin{Shaded}
  342. \begin{Highlighting}[]
  343. \NormalTok{p }\OperatorTok{+}\StringTok{ }\KeywordTok{my_theme_dark}\NormalTok{()}
  344. \end{Highlighting}
  345. \end{Shaded}
  346. \includegraphics{dataviz_files/figure-latex/unnamed-chunk-26-1.pdf}
  347. \bibliography{book.bib,packages.bib}
  348. \end{document}