Listing du fichier intror3.php
00001 <?php
00002 # (gH) -_- intror3.php ; TimeStamp (unix) : 19 Août 2013 vers 20:20
00003
00004 error_reporting(E_ALL | E_NOTICE | E_STRICT) ;
00005 include("std7.php") ;
00006 include("intror_inc.php") ;
00007 include_once("../../statuno.php") ;
00008
00009 $numSerie = 3 ;
00010 debutPageExoScr1($numSerie) ;
00011
00012 ## -------------------------------------------------------------------------------------------
00013
00014 sdl(3) ; echo cmt(' pour afficher toutes les solutions : intror3.php?solutions=1') ; sdl(3) ;
00015
00016 ## -------------------------------------------------------------------------------------------
00017
00018 p("texte") ;
00019 echo "" ;
00020 finp() ;
00021 debutSection() ;
00022
00023 $tableauDesRubriques = array() ;
00024 $idr = 0 ;
00025 $idr++; $tableauDesRubriques[$idr] = "Types de graphiques et philosophie des graphiques en $R " ;
00026 $idr++; $tableauDesRubriques[$idr] = "Quelles instructions pour quels tracés ?" ;
00027 $idr++; $tableauDesRubriques[$idr] = "Tracé de points, de courbes et gestion des options (axes, couleurs...) " ;
00028 $idr++; $tableauDesRubriques[$idr] = "Superposition de graphiques " ;
00029 $idr++; $tableauDesRubriques[$idr] = "Histogrammes de classes et de fréquences" ;
00030 $idr++; $tableauDesRubriques[$idr] = "\"Boxplots\" et ".em("consor") ;
00031 $idr++; $tableauDesRubriques[$idr] = "Export de graphiques en PNG et PDF " ;
00032 $idr++; $tableauDesRubriques[$idr] = "Heatmap, vous avez dit heatmap ?" ;
00033 $idr++; $tableauDesRubriques[$idr] = "Configuration de $R et des graphiques" ;
00034 $idr++; $tableauDesRubriques[$idr] = "Non présentation (!) des packages graphics, beanplot, lattice, grid, plotrix et ggplot2. " ;
00035 $idr++; $tableauDesRubriques[$idr] = "Bibliographie des graphiques en $R " ;
00036 $tdmCRLM = new tdm($tableauDesRubriques) ;
00037 $tdmCRLM->titre() ;
00038 $tdmCRLM->menu("oui","oui","nou") ;
00039
00040 pvide() ;
00041
00042 p() ;
00043 echo "Il est possible d'afficher toutes les solutions via ".href("intror3.php?solutions=1","?solutions=1","bouton_fin jaune_pastel nou").". " ;
00044 finp() ;
00045
00046 finSection() ;
00047
00048 debutSection() ;
00049 $numExo = 0 ;
00050
00051 ## -------------------------------------------------------------------------------------------
00052
00053 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Types de graphiques et philosophie des graphiques en $R
00054
00055 ## -------------------------------------------------------------------------------------------
00056
00057 blockquote() ;
00058
00059 blockquote() ;
00060
00061 p("texte") ;
00062 echo "Quel type de graphiques peut-on tracer en $R ?" ;
00063 echo " Où peut-on voir des exemples de tracés sophistiqués en $R ?" ;
00064 echo " Savez-vous nommer tous les ".aname("graphiques","graphiques")." ci-dessous ?" ;
00065 finp() ;
00066 ?>
00067
00068 <blockquote>
00069 <table summary="images" cellspacing="20" border="0">
00070 <tr>
00071 <td align="center"><a href="../../images/anabiv.png"><img src="../../images/anabiv.png" alt="anabiv" height="150"/></a></td>
00072 <td align="center"><a href="../../Bism/lea_acp1.png"><img src="../../Bism/lea_acp1.png" alt="lea" height="150"/></a></td>
00073 <td align="center"><a href="../Eda/chol.png"><img src="../Eda/chol.png" alt="stim1" height="150"/></a></td>
00074 <td align="center"><a href="../Eda/Stim/stim_demo2.png"><img src="../Eda/Stim/stim_demo2.png" alt="stim1" height="150"/></a></td>
00075 </tr>
00076 <tr>
00077 <td align="center"><a href="../../images/S12METAVIR.png"><img src="../../images/S12METAVIR.png" alt="s12metavir" height="150"/></a></td>
00078 <td align="center"><a href="../../Datasets/iris.gif"><img src="../../Datasets/iris.gif" alt="iris" height="150"/></a></td>
00079 <!-- <td align="center"><a href="../../images/s12corr.png"><img src="../../images/s12corr.png" alt="s12corr" height="150"/></a></td> -->
00080 <td align="center"><a href="preyprots.png"><img src="preyprots.png" alt="preyprots" height="150"/></a></td>
00081 <td align="center"><a href="../../images/acp_12.png"><img src="../../images/acp_12.png" alt="acp12" height="150"/></a></td>
00082 </tr>
00083 <tr>
00084 <td align="center"><a href="../../images/acp_ind12.png"><img src="../../images/acp_ind12.png" alt="acp12ind" height="150"/></a></td>
00085 <td align="center"><a href="../../images/BulkinessGdUnip.png"><img src="../../images/BulkinessGdUnip.png" alt="bulkiGunip" height="150"/></a></td>
00086 <td align="center"><a href="../../images/fig2.png"><img src="../../images/fig2.png" alt="fig2" height="150"/></a></td>
00087 <td align="center"><a href="../../images/G.png"><img src="../../images/G.png" alt="GLY" height="150"/></a></td>
00088 </tr>
00089 <tr>
00090 <td align="center"><a href="heatmap.png"><img src="heatmap.png" alt="heatmap" height="150"/></a></td>
00091 <td align="center"><a href="dag.png"><img src="dag.png" alt="dag" height="150"/></a></td>
00092 <td align="center"><a href="network.png"><img src="network.png" alt="network" height="150"/></a></td>
00093 <td align="center"><a href="kegg_graph.png"><img src="kegg_graph.png" alt="kegg_graph" height="150"/></a></td>
00094 </tr>
00095 <tr>
00096 <td align="center"><a href="chernoff.png"><img src="chernoff.png" alt="chernoff" height="150"/></a></td>
00097 <td align="center"><a href="normalisation.png"><img src="normalisation.png" alt="normalisation" height="150"/></a></td>
00098 <td align="center"><a href="lmres.png"><img src="lmres.png" alt="lmres" height="150"/></a></td>
00099 <td align="center"><a href="tricroise.png"><img src="tricroise.png" alt="tricroise" height="150"/></a></td>
00100 </tr>
00101 <tr>
00102 <td align="center"><a href="heatscatter.png"><img src="heatscatter.png" alt="heatscatter" height="150"/></a></td>
00103 <td align="center"><a href="regressionconfint.png"><img src="regressionconfint.png" alt="regressionconfint" height="150"/></a></td>
00104 <td align="center"><a href="dendrogram.png"><img src="dendrogram.png" alt="dendrogram" height="150"/></a></td>
00105 <td align="center"><a href="bigraph.png"><img src="bigraph.png" alt="bigraph" height="150"/></a></td>
00106 </tr>
00107 <tr>
00108 <td align="center"><a href="assocplot.png"><img src="assocplot.png" alt="assocplot" height="150"/></a></td>
00109 <td align="center"><a href="mosaicplot.png"><img src="mosaicplot.png" alt="mosaicplot" height="150"/></a></td>
00110 <td align="center"><a href="spider.png"><img src="spider.png" alt="spider" height="150"/></a></td>
00111 <td align="center"><a href="clusterplot.png"><img src="clusterplot.png" alt="clusterplot" height="150"/></a></td>
00112 </tr>
00113 <tr>
00114 <td align="center"><a href="beeswarm2.png"><img src="beeswarm2.png" alt="beeswarm2" height="150"/></a></td>
00115 <td align="center"><a href="bagplot.png"><img src="bagplot.png" alt="bagplot" height="150"/></a></td>
00116 <td align="center"><a href="coplot.png"><img src="coplot.png" alt="coplot" height="150"/></a></td>
00117 <td align="center"><a href="barp.png"><img src="barp.png" alt="barp" height="150"/></a></td>
00118 </tr>
00119 </table>
00120 </blockquote>
00121
00122
00123 <?php
00124
00125 # manque contourplot mosaicplot radarplot sunflowerplot persp qqplot stripchart spider spineplot dotchart clusterplot
00126
00127 p("texte") ;
00128 echo "Quelles sont les options de la fonction ".b("plot()")." ? " ;
00129 echo "Où sont stockées les valeurs par défaut pour les graphiques en $R ? " ;
00130 echo "Comment modifier une option puis remettre la valeur par défaut ?" ;
00131 finp() ;
00132
00133 finblockquote() ;
00134
00135 solution($numExo,$numSerie) ;
00136
00137 p("texte") ;
00138 echo "$R peut tout tracer tous les types de graphiques existants. Voici quelques noms de fonctions évocateurs avec indication du package associé :" ;
00139 finp() ;
00140
00141
00142 blockquote() ;
00143 table(1,15,"collapse") ;
00144 entetesTableau("Fonction Package Démonstration Fonction Package Démonstration","bleu_pastel") ;
00145
00146 $ldf = "plot matplot pairs barplot pie dotchart coplot cdplot mosaicplot spineplot persp " ;
00147 $ldf .= "image contour heatmap hist qqnorm qqplot boxplot stripchart dotchart assocplot sunflowerplot rug vioplot spider radar circular clusterplot" ;
00148 $tdf = preg_split("/\s+/",$ldf) ;
00149
00150 $ldp = "graphics graphics graphics graphics graphics graphics graphics graphics graphics graphics graphics " ;
00151 $ldp .= "graphics graphics stats graphics stats stats graphics graphics graphics graphics graphics graphics vioplot psych psych circular LSD" ;
00152 $tdp = preg_split("/\s+/",$ldp) ;
00153
00154 $ido = -1 ;
00155 tr() ;
00156 foreach ($tdf as $fonc) {
00157 $ido++ ;
00158 $f = $tdf[$ido] ;
00159 $p = $tdp[$ido] ;
00160 $d = "example($f) " ;
00161 if (!(($p=="graphics") or ($p=="stats"))) { $d = "library($p) ; $d " ; } ;
00162 td("","tajaunec") ;
00163 if (($f=="qqplot") or ($f=="radar")) {
00164 if ($f=="qqplot") { echo hrrr("qqnorm",$p,"qqplot()")." " ; } ;
00165 if ($f=="radar") { echo hrrr("spider",$p,"radar()")." " ; } ;
00166 } else {
00167 echo hrrr($f,$p)." " ;
00168 } ; # fin si
00169 fintd() ;
00170 td("","tarose") ; echo hrrp($p) ; fintd() ;
00171 td("","tagris") ; echo " $d " ; fintd() ;
00172 if (($ido % 2)==1) {
00173 fintr() ;
00174 if ($ido<27) { tr() ; } ;
00175 } # fin si
00176 } # fin pour ;
00177 fintable() ;
00178 finblockquote() ;
00179
00180 p("texte") ;
00181 echo " Le site " ;
00182 #echo href("http://rgm3.lab.nig.ac.jp/RGM/","R Graphical Manual","grouge") ;
00183 echo href("https://www.r-graph-gallery.com/all-graphs/","R Graph Gallery","grouge") ;
00184 echo " met en ligne plusieurs milliers de graphiques produits via $R. " ; # en 2013 (environ 52000 en 2015). Sur ce site, cliquer sur une image " ;
00185 echo " Sur ce site, cliquer sur une image " ;
00186 echo " mène au code $R pour reproduire le graphique. Ce site donne " ;
00187 echo " une bonne vue de la capacité de $R à produire des graphiques sophistiqués." ;
00188 finp() ;
00189
00190 p("texte") ;
00191 echo "La fonction " ;
00192 echo hrrr("plot","graphics") ;
00193 echo " fait partie du package " ;
00194 echo hrrp("graphics") ;
00195 echo " qui contient moins d'une centaine de fonctions. " ;
00196 echo " C'est une fonction dite ".b("générique")." qui sert de point d'entrée à d'autres fonctions comme " ;
00197 echo hrrr("plot.factor","graphics").", " ;
00198 echo hrrr("plot.formula","graphics").", " ;
00199 echo hrrr("curve","graphics","plot.function()").", " ;
00200 echo hrrr("plothistogram","graphics","plot.histogram()").", " ;
00201 echo hrrr("plot.table","graphics")." et " ;
00202 echo hrrr("plot.window","graphics")." afin d'interfacer " ;
00203 echo hrrr("plot.xy","graphics") ;
00204 echo ". " ;
00205 finp() ;
00206
00207 p("texte") ;
00208 echo "Un copier/coller sous $R du code suivant permet de voir chacune des fonctions ".b("plot.*")." en action (graphiques non reproduits ici) :" ;
00209 finp() ;
00210
00211 entree_R("plots.r") ;
00212 sortie_R("plots.sor") ;
00213
00214 p("texte") ;
00215 echo "Il existe beaucoup trop de fonctions ".b("plot")." induites pour pouvoir les présenter ici car toute classe d'objets implémente en général " ;
00216 echo " sa fonction " ;
00217 echo b("print").", " ;
00218 echo " sa fonction " ;
00219 echo b("plot")." et " ;
00220 echo " sa fonction " ;
00221 echo b("summary").". " ;
00222 echo " Citons seulement celles du package " ;
00223 echo hrrp("stats")." :" ;
00224 finp() ;
00225
00226 pre_fichier("plots_stats.txt","cadre") ;
00227
00228 p("texte") ;
00229 echo "La philosophie de $R en ce qui concerne les graphiques en mode standard est d'autoriser un maximum de souplesse à travers des " ;
00230 echo " valeurs par défaut et des interfaces pour des primitives. Ainsi ".b('plot(main="Tracé"...)')." dit à " ;
00231 echo hrrr("plot","graphics") ;
00232 echo " que le " ;
00233 echo " titre principal de la figure est ".b("Tracé")." mais on aurait pu, après avoir tracé avec ".b("plot()").", utiliser " ;
00234 echo " la fonction ";
00235 echo hrrr("title","graphics")." via ".b('title(main="Tracé")').". " ;
00236 finp() ;
00237
00238 p("texte") ;
00239 echo "De nombreux ".s_span("par","grouge")."amètres graphiques sont disponibles avec la fonction " ;
00240 echo hrrr("par","graphics").". Il suffit de taper ".b("example(par)")." sous $R pour voir une partie de l'utilisation de ces paramètres. " ;
00241 echo " La liste des paramètres graphiques, fournie par ".b("par()").", n'est pas très facile à comprendre, ni à mémoriser, car de nombreuses données sont " ;
00242 echo " des abbréviations américaines, comme " ;
00243 echo b("cex")." pour ".em("Character EXtension")." (facteur d'expansion de la taille des caractères) ou " ;
00244 echo b("omi")." pour ".em("Outer Margin in Inches")." (taille de la marge extérieure en pouces)." ;
00245 echo " Voici cette liste triée par ordre alphabétique du nom des paramètres avec la ou les valeurs par défaut lorsqu'elles existent. " ;
00246 finp() ;
00247
00248 pre_fichier("par.sor","cadre") ;
00249
00250 /*
00251
00252 adj
00253 ann
00254 ask
00255 bg
00256 bty
00257 cex
00258 cex.axis
00259 cex.lab
00260 cex.main
00261 cex.sub
00262 cin
00263 col
00264 col.axis
00265 col.lab
00266 col.main
00267 col.sub
00268 cra
00269 crt
00270 csi
00271 cxy
00272 din
00273 err
00274 family
00275 fg
00276 fig
00277 fin
00278 font
00279 font.axis
00280 font.lab
00281 font.main
00282 font.sub
00283 lab
00284 las
00285 lend
00286 lheight
00287 ljoin
00288 lmitre
00289 lty
00290 lwd
00291 mai
00292 mar
00293 mex
00294 mfcol
00295 mfg
00296 mfrow
00297 mgp
00298 mkh
00299 new
00300 oma
00301 omd
00302 omi
00303 pch
00304 pin
00305 plt
00306 ps
00307 pty
00308 smo
00309 srt
00310 tck
00311 tcl
00312 usr
00313 xaxp
00314 xaxs
00315 xaxt
00316 xlog
00317 xpd
00318 yaxp
00319 yaxs
00320 yaxt
00321 ylog
00322
00323 dire :
00324
00325 text legend axis
00326 box mtext
00327
00328
00329
00330 */
00331 # http://research.stowers-institute.org/efg/R/Graphics/Basics/mar-oma/
00332
00333
00334
00335 p("texte") ;
00336 echo "Contrairement aux fonctions statistiques, les fonctions graphiques fournies par $R sont difficiles à maitriser compte-tenu " ;
00337 echo " des nombreux paramètres mis en jeu. De plus des packages complémentaires comme " ;
00338 echo hrrp("lattice")." avec ".href("lls_lattice.txt","148 objets","gvert nou")." et " ;
00339 # grid
00340 echo hrrp("ggplot2")." avec ".href("lls_ggplot2.txt","240 objets","gvert nou") ;
00341 echo " fournissent des fonctions complémentaires parfois encore plus techniques. " ;
00342 echo " Il est d'usage de progresser prudemment et de ne pas chercher tout de suite à tout réaliser dans un graphique avec $R mais au contraire de " ;
00343 echo "\"monter\" progressivement les graphiques. Une fois le tracé obtenu, la programmation permet d'automatiser la production de " ;
00344 echo " graphiques avec le même \"profil\"." ;
00345 finp() ;
00346
00347 p("texte") ;
00348 echo "Pour sauvegarder les paramètres graphiques courants, il suffit de stocker le résultat de la fonction " ;
00349 echo hrrr("par","graphics").". On peut ensuite réaffecter l'objet sauvegardé. En voici un exemple :" ;
00350 finp() ;
00351
00352 entree_R("sauvepar.r") ;
00353
00354 p("texte") ;
00355 echo " Le package ".hrrp("ggplot2") ;
00356 echo " implémente la " ;
00357 echo href("https://www.springer.com/gp/book/9780387245447","grammaire des graphiques") ;
00358 echo " au sens de " ;
00359 echo href("https://www.cs.uic.edu/~wilkinson/TheGrammarOfGraphics/GOG.html","L. Wilkinson").". " ;
00360 echo " Une carte de référence en français est ".href("https://thinkr.fr/pdf/ggplot2-french-cheatsheet.pdf","ici").". " ;
00361 finp() ;
00362
00363 p("texte") ;
00364 nbsp(5) ;
00365 $img = "ggplot2s.png" ;
00366 echo href($img,img($img,"",800)) ;
00367 finp() ;
00368
00369 # http://larmarange.github.io/analyse-R/intro-ggplot2.html
00370 # https://thinkr.fr/pdf/ggplot2-french-cheatsheet.pdf
00371
00372 p("texte") ;
00373 echo " Le package ".hrrp("lattice") ;
00374 echo " contient également des fonctions intéressantes" ;
00375 echo " pour des graphiques par groupe, par série. " ;
00376 echo href("https://www.amazon.com/Lattice-Multivariate-Data-Visualization-Use/dp/0387759689","Un livre chez Springer") ;
00377 echo " lui est consacré." ;
00378 finp() ;
00379
00380 finsolution() ;
00381
00382 finblockquote() ;
00383
00384 ## -------------------------------------------------------------------------------------------
00385
00386 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Combien d'instructions
00387
00388 ## -------------------------------------------------------------------------------------------
00389
00390 blockquote() ;
00391
00392 blockquote() ;
00393
00394 p("texte") ;
00395 echo "Combien d'instructions $R faut-il pour réaliser le graphique suivant, si les données sont dans la variable ".b("lng")." ?" ;
00396 echo " Et avec les fonctions (gH) ?" ;
00397 finp() ;
00398
00399 graphique_R_png("leadblng3.png") ;
00400
00401 p("texte") ;
00402 echo " On pourra par exemple lire les données de longueur, issues du dossier " ;
00403 echo href("http://www.info.univ-angers.fr/pub/gh/Datasets/lea.htm","LEADB","grouge nou") ;
00404 echo " avec les instructions suivantes :" ;
00405 finp() ;
00406
00407 pre_fichier("lngleadb.r","cadre") ;
00408
00409 finblockquote() ;
00410
00411 solution($numExo,$numSerie) ;
00412
00413 p("texte") ;
00414 echo "Il y a visiblement " ;
00415 finp() ;
00416
00417 ol() ;
00418
00419 debutli() ;
00420 p() ;
00421 echo " un histogramme en bleu ciel, tracé via la fonction " ;
00422 echo hrrr("hist","graphics").", " ;
00423 finp() ;
00424 finli() ;
00425
00426 debutli() ;
00427 p() ;
00428 echo " la loi normale en rouge, sans doute tracée via " ;
00429 echo hrrr("curve","graphics").", " ;
00430 finp() ;
00431 finli() ;
00432
00433 debutli() ;
00434 p() ;
00435 echo " la courbe de densité estimée par noyau en bleu foncé via " ;
00436 echo hrrr("lines","graphics").", " ;
00437 #echo hrrr("density","stats").", " ;
00438 finp() ;
00439 finli() ;
00440
00441 debutli() ;
00442 p() ;
00443 echo " une estimation visuelle de la densité via un \"peigne\" sur l'axe x avec " ;
00444 echo hrrr("rug","graphics").", " ;
00445 finp() ;
00446 finli() ;
00447
00448 debutli() ;
00449 p() ;
00450 echo " une légende en haut et à droite obtenue par " ;
00451 echo hrrr("legend","graphics").", " ;
00452 finp() ;
00453 finli() ;
00454
00455 debutli() ;
00456 p() ;
00457 echo " et enfin un titre et les labels pour les axes produits par " ;
00458 echo hrrr("title","graphics").". " ;
00459 finp() ;
00460 finli() ;
00461
00462 finol() ;
00463
00464 p("texte") ;
00465 echo " Il faut donc sans doute six instructions de tracé pour réaliser le graphique. Vérification (tester par copier/coller de chaque " ;
00466 echo "ligne au fur et à mesure) :" ;
00467 finp() ;
00468
00469 entree_R("histqtlng.r") ;
00470
00471 p("texte") ;
00472 echo "Les fonctions " ;
00473 echo hrrr("Normal","stats","dnorm()")." " ;
00474 echo " et " ;
00475 echo hrrr("density","stats")." " ;
00476 echo " font partie du package " ;
00477 echo hrrp("stats").", " ;
00478 echo " bien sûr." ;
00479 finp() ;
00480
00481 p("texte") ;
00482 echo "Avec " ;
00483 echo href("http://forge.info.univ-angers.fr/~gh/wstat/statghfns.php","les fonctions gH","grouge") ;
00484 echo ", une seule instruction suffit, qui fournit aussi l'analyse statistique de la variable et trois autres graphiques, " ;
00485 echo " nommée ".href("http://forge.info.univ-angers.fr/~gh/wstat/statghfns.php?lafns=decritQT","decritQT")." :" ;
00486 finp() ;
00487
00488 entree_R("statghlng.r") ;
00489 sortie_R("statghlng_sor.txt") ;
00490 graphique_R_png("leadblng2.png") ;
00491
00492
00493 p("texte") ;
00494 echo "S'il semble très facile de tracer des histogrammes, des courbes de densité, les calculs et les choix (nombre de classes, valeur de la densité...) " ;
00495 echo " font appel à des connaissances statistiques avancées. Voir par exemple la page " ;
00496 echo href("http://en.wikipedia.org/wiki/Kernel_density_estimation","density estimation","grouge nou").", sans doute plus intéressante que la page ";
00497 echo href("http://fr.wikipedia.org/wiki/Estimation_par_noyau","estimation par noyau","gvert nou")." dont une ";
00498 echo " application intéressante est en géographie humaine ".href("http://lara.inist.fr/bitstream/handle/2332/879/0949_T1.pdf;jsessionid=48A41A9B660B39BB2D1FE80DFBFD4E02?sequence=4","ici").". " ;
00499 finp() ;
00500
00501 finsolution() ;
00502
00503 finblockquote() ;
00504
00505 ## -------------------------------------------------------------------------------------------
00506
00507 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Tracé de points, de courbes et gestion des options (axes, couleurs...)
00508
00509 ## -------------------------------------------------------------------------------------------
00510
00511 blockquote() ;
00512
00513 blockquote() ;
00514
00515 p("texte") ;
00516 echo "Comment tracer deux séries de points l'une en fonction de l'autre ? " ;
00517 echo "Et avec une couleur différente selon un troisième critère ? " ;
00518 finp() ;
00519
00520 p("texte") ;
00521 echo "Comment retrouver les différents symboles utilisables pour ".b("plot()")." ? " ;
00522 echo " Et comment ajouter une légende ? " ;
00523 finp() ;
00524
00525 p("texte") ;
00526 echo " On pourra par exemple tracer le poids en fonction de la taille pour les données ".href("../../Datasets/her.htm","HER","grouge")." " ;
00527 echo " avec une seule couleur (noir) puis tracer avec les hommes en bleu et les femmes en rouge. " ;
00528 finp() ;
00529
00530 finblockquote() ;
00531
00532 solution($numExo,$numSerie) ;
00533
00534 p("texte") ;
00535 echo "Le tracé de points et de lignes peut se faire avec " ;
00536 echo hrrr("plot","graphics").", " ;
00537 echo hrrr("points","graphics")." et " ;
00538 echo hrrr("lines","graphics").". Pour l'instant nous ne présenterons que " ;
00539 echo hrrr("plot","graphics")." " ;
00540 echo " du package ".hrrp("","graphics")."." ;
00541 finp() ;
00542
00543 p("texte") ;
00544 echo "La syntaxe de base de " ;
00545 echo hrrr("plot","graphics")." " ;
00546 echo " est ".b("plot(x,y)").", " ;
00547 echo " mais on peut aussi utiliser la syntaxe ".b("plot(y~x)")." où le symbole ~ (tilde) se lit «en fonction de ». " ;
00548 echo " Le paramètre ".b("type")." permet de choisir entre points, lignes ou les deux, etc. " ;
00549 echo " Le paramètre ".b("main")." correspond au titre (principal). " ;
00550 echo " Le paramètre ".b("col")." choisit la couleur de tracé. " ;
00551 echo " Voici donc quelques exemples à copier/coller. " ;
00552 finp() ;
00553
00554 entree_R("plot1.r") ;
00555
00556
00557 p("texte") ;
00558 echo "Les différents caractères possibles à utiliser (".b("pch=Plot CHaracter").") sont affichés si on tape ".b("example(pch)").". " ;
00559 echo " En voici une partie :" ;
00560 finp() ;
00561
00562 graphique_R_png("pch_show.png","800") ;
00563
00564
00565 p("texte") ;
00566 echo "Pour les données " ;
00567 echo href("../../Datasets/her.htm","HER","grouge").", nous allons utiliser un triangle bleu, pointe en haut, pour les hommes " ;
00568 echo " soit ".b("pch=17")." et ".b("col=\"blue\"")." alors que nous prendrons un rond rouge pour les femmes, " ;
00569 echo " soit ".b("pch=16")." et ".b("col=\"red\"").". " ;
00570 echo " On utilise la variable SEXE pour générer les filtres correspondants :" ;
00571 finp() ;
00572
00573 entree_R("her1.r") ;
00574
00575 graphiques_R_png("her1.png","her2.png") ;
00576
00577
00578 p("texte") ;
00579 echo "La fonction " ;
00580 echo hrrr("title","graphics")." gère le titre (".b("main")."), le sous-titre (".b("sub").") et les labels des axes " ;
00581 echo "(".b("xlab")." et ".b("ylab").") alors que la fonction " ;
00582 echo hrrr("legend","graphics")." permet d'expliciter les symboles, caractères et couleurs utilisés. " ;
00583 echo "La fonction " ;
00584 echo hrrr("png","grDevices")." redirige la sortie graphique vers un fichier PNG et " ;
00585 echo " la fonction " ;
00586 echo hrrr("dev","grDevices","dev.off()")." permet de fermer le fichier image généré. " ;
00587 finp() ;
00588
00589 finsolution() ;
00590
00591 finblockquote() ;
00592
00593 ## -------------------------------------------------------------------------------------------
00594
00595 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Superposition de graphiques
00596
00597 ## -------------------------------------------------------------------------------------------
00598
00599 blockquote() ;
00600
00601 blockquote() ;
00602
00603 p("texte") ;
00604 echo " Est-ce simple d'ajouter des points à un graphique en $R ?" ;
00605 echo " Et de rajouter des lignes ?" ;
00606 echo " Et de quadriller le graphique ?" ;
00607 echo " On pourra, par exemple, pour les variables ".b("poids")." et ".b("tailles")." précédentes, ajouter des lignes pour les moyennes, les points médians... " ;
00608 finp() ;
00609
00610 p("texte") ;
00611 echo " On voudrait superposer plusieurs tracés de ".hrrr("plot").", par exemple la colonne ".b("Y")." en fonction de ".b("X").", puis " ;
00612 echo " la colonne ".b("Z")." en fonction de ".b("X")." sur le même graphique. Comment réaliser cela en $R ? ";
00613 echo " Et produire deux graphiques (ou plus) dans une même fenêtre ? ";
00614 echo " On utilisera les prix par année du dossier " ;
00615 echo href("../../Datasets/logement.htm","LOGEMENT","grouge")." " ;
00616 echo " pour tester ces graphiques. " ;
00617 finp() ;
00618
00619
00620
00621 finblockquote() ;
00622
00623 solution($numExo,$numSerie) ;
00624
00625 p("texte") ;
00626 echo "La fonction " ;
00627 echo hrrr("points","graphics")." permet d'ajouter des points à un graphique alors que la fonction " ;
00628 echo hrrr("abline","graphics")." permet d'ajouter une droite. " ;
00629 echo "La fonction " ;
00630 echo hrrr("rect","graphics")." trace un rectangle. " ;
00631 echo "Si on utilise ".b('plot(...,type="n")')." $R ne trace rien mais définit le cadre graphique. On peut alors " ;
00632 echo " tracer à nouveau avec ".b("plot()")." à condition d'utiliser ".b('par(new=TRUE)')." avant lorsqu'on veut superposer des " ;
00633 echo " graphiques. C'est ce que nous avons fait ci-dessous, avec un appel à " ;
00634 echo hrrr("grid","graphics")." pour ajouter un quadrillage." ;
00635 finp() ;
00636
00637 entree_R("her2.r") ;
00638
00639 graphique_R_png("her3.png","800") ;
00640
00641 p("texte") ;
00642 echo "Avec " ;
00643 echo hrrr("text","graphics")." on peut écrire ce qu'on veut dans le graphique. " ;
00644 echo hrrr("arrows","graphics")." permet d'ajouter des flèches. " ;
00645 echo "Comme le symbole ♀ n'est pas disponible directement en $R, nous avons été le chercher dans le package " ;
00646 echo hrrp("TeachingDemos")." via " ;
00647 echo hrrr("mysymbols","TeachingDemos","my.symbols()")." et ".b("ms.female").". " ;
00648 echo " Enfin, pour écrire dans la marge, nous avons utilisé " ;
00649 echo hrrr("mtext","graphics")." après avoir modifié les paramètres graphiques " ;
00650 echo b("omi")." (Outer margin in Inches) et ".b("mai")." (MArgin size in Inches)." ;
00651 echo " On pourra consulter la page " ;
00652 echo href("http://research.stowers-institute.org/efg/R/Graphics/Basics/mar-oma/","mar-oma","grouge") ;
00653 echo " pour mieux comprendre ces paramètres graphiques et ceux qui sont associés comme " ;
00654 echo b("oma")." (Outer MArgin in lines) et ".b("mar")." (MARgin size in lines)." ;
00655 finp() ;
00656
00657 entree_R("her3.r") ;
00658
00659 graphique_R_png("her4.png","800") ;
00660
00661 # dire par(ask) mfrow mfcol locator
00662
00663 p("texte") ;
00664 echo "Pour afficher deux tracés sur un même graphique, «bricoler» avec ".b("plot()")." et ses options " ;
00665 echo " aboutit souvent à un graphique raté (superposition des axes, des titres...) même avec ".b("par(new=TRUE)")." :" ;
00666 finp() ;
00667
00668 entree_R("loge01.r") ;
00669
00670 graphique_R_png("loge01.png","800") ;
00671
00672 p("texte") ;
00673 echo "Ou alors, il faut prendre beaucoup de précautions :" ;
00674 finp() ;
00675
00676 entree_R("loge02.r") ;
00677 graphique_R_png("loge02.png","800") ;
00678
00679 p("texte") ;
00680 echo "Il est d'usage, lorsqu'on veut effectuer plusieurs tracés sur une même zone graphique avec un même axe ".b("X").", de déterminer le " ;
00681 echo "maximum global en ".b("Y").", d'effectuer le premier tracé avec ".b("plot()")." et les tracés suivants avec ".b("points()")." ou ".b("lines()").". " ;
00682 finp() ;
00683 entree_R("loge03.r") ;
00684 graphique_R_png("loge03.png","800") ;
00685
00686 p("texte") ;
00687 echo "Pour effectuer plusieurs tracés dans des zones graphiques identiques, " ;
00688 echo " on peut utiliser les paramètres graphiques " ;
00689 echo b("mfrow")." et " ;
00690 echo b("mfcol")." " ;
00691 finp() ;
00692 entree_R("loge04.r") ;
00693 graphiques_R_png("loge04a.png","loge04b.png") ;
00694
00695 entree_R("loge05.r") ;
00696 graphique_R_png("loge05.png","800") ;
00697
00698
00699 p("texte") ;
00700 echo "Il est clair qu'au vu d'une telle répétition de code, savoir programmer en $R devient rapidement indispensable. " ;
00701 echo " Voici sans explications un exemple de fonction pour produire le même graphique à moindre frais :" ;
00702 finp() ;
00703 entree_R("loge06.r") ;
00704
00705 p("texte") ;
00706 echo "Signalons enfin que pour utiliser des zones de tracé inégales, il existe la fonction " ;
00707 echo hrrr("layout","graphics")." dont voici un exemple d'utilisation, largement inspiré de " ;
00708 echo b("example(layout)")." :" ;
00709 finp() ;
00710 entree_R("layout.r") ;
00711 graphique_R_png("layout.png","800") ;
00712
00713 finsolution() ;
00714
00715 finblockquote() ;
00716
00717 ## -------------------------------------------------------------------------------------------
00718
00719 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Histogrammes de classes et de fréquences
00720
00721 ## -------------------------------------------------------------------------------------------
00722
00723 blockquote() ;
00724
00725 blockquote() ;
00726
00727 p("texte") ;
00728 echo " Comment tracer des histogrammes de classes en $R, par exemple pour les ".b("ages") ;
00729 echo " du dossier " ;
00730 echo href("../../Datasets/elf.htm","ELF","grouge")." " ;
00731 echo " ?" ;
00732 finp() ;
00733
00734 p("texte") ;
00735 echo " Comment tracer des histogrammes de fréquences en $R, par exemple pour le ".b("code-sexe") ;
00736 echo " du dossier " ;
00737 echo href("../../Datasets/titanic.htm","TITANIC","grouge")." " ;
00738 echo " ?" ;
00739 finp() ;
00740
00741 finblockquote() ;
00742
00743 solution($numExo,$numSerie) ;
00744
00745 p("texte") ;
00746 echo "Si on devait tracer un histogramme de classes à la main pour des données quantitatives, il faudrait commencer par découper la " ;
00747 echo " variables en classes. Avec $R, pas besoin de passer par la fonction " ;
00748 echo hrrr("cut") ;
00749 echo " parce que la fonction " ;
00750 echo hrrr("hist","graphics") ;
00751 echo " s'occupe de tout, mais il est possible, bien sûr de choisir le nombre de classes (via ".b("breaks")."). " ;
00752 echo " Dans la mesure où la fonction " ;
00753 echo hrrr("density","stats") ;
00754 echo " réalise l'" ;
00755 echo href("http://fr.wikipedia.org/wiki/Estimation_par_noyau","estimation par noyau","gbleuf")." (au sens de de Parzen-Rozenblatt) de la densité de probabilité de la variable aléatoire sous-jacente, " ;
00756 echo " il est facile de tracer cette densité à laquelle nous conseillons d'adjoindre la loi normale associée à la moyenne et à l'écart-type des données, " ;
00757 echo " ce qui se réalise très simplement avec " ;
00758 echo hrrr("Normal","stats","dnorm()") ;
00759 echo " et " ;
00760 echo hrrr("curve","graphics").". Enfin, si on complète le graphique avec des indications de densité sur l'axe des X grâce à " ;
00761 echo hrrr("rug","graphics").", on dispose d'un graphique assez complet pour apprécier la distribution des données. " ;
00762 finp() ;
00763
00764 entree_R("hist01.r") ;
00765 graphique_R_png("hist01.png","800") ;
00766
00767 p("texte") ;
00768 echo b("Remarque :")." si on spécifie ".b("plot=FALSE")." dans l'appel à " ;
00769 echo hrrr("hist","graphics") ;
00770 echo ", on peut voir quel découpage a été réalisé. En particulier, cela peut permettre " ;
00771 echo " de fournir les \"bonnes\" valeurs à " ;
00772 echo hrrr("cut").". " ;
00773 finp() ;
00774 entree_R("hist03.r") ;
00775 sortie_R("hist03.sor") ;
00776
00777 p("texte") ;
00778 echo "Réaliser l'histogramme des fréquences des modalités d'une variable qualitative se fait non pas avec " ;
00779 echo hrrr("hist","graphics") ;
00780 echo " qui génére des barres contigües mais avec " ;
00781 echo hrrr("barplot","graphics")." dont les barres sont nettement séparées. Comme avec Excel, le tracé par défaut utilise des effectifs absolus (donc des comptages au lieu de pourcentages) " ;
00782 echo " avec un axe Y borné par la plus grande fréquence. Cette représentation est souvent trompeuse lorsqu'on veut comparer des fréquences. Il vaut mieux utiliser des fréquences relatives " ;
00783 echo " et tracer sur l'intervalle [0,1] pour Y. La commande ".b("example(barplot)")." montre comment réaliser des histogrammes de fréquences cumulées et conjointes." ;
00784 finp() ;
00785
00786 entree_R("barplot01.r") ;
00787 graphiques_R_png("barplot01.png","barplot02.png") ;
00788
00789 p("texte") ;
00790 echo "Pour réaliser des histogrammes de fréquences horizontaux plutôt que verticaux, il faut écrire ".b("horiz=TRUE") ;
00791 echo " et si on doit réaliser des graphiques en noir et blanc pour publication, on utilise les paramètres graphiques " ;
00792 echo b("density")." et ".b("angle")." :" ;
00793 finp() ;
00794
00795 entree_R("barplot02.r") ;
00796 graphique_R_png("barplot03.png","800") ;
00797
00798 p("texte") ;
00799 echo "Lorsqu'on trace des histogrammes de fréquences pour des données ne se référant pas au même échantillon, il est en général incorrect " ;
00800 echo " d'utiliser des effectifs absolus." ;
00801 finp() ;
00802
00803 entree_R("hist02.r") ;
00804 graphique_R_png("hist02.png","800") ;
00805
00806 p("texte") ;
00807 echo "En cas d'histogrammes de fréquences pour des tris croisés, il faut bien réfléchir au sens de croisement. Etes-vous capable de voir lequel des deux croisements ci-dessous est " ;
00808 echo "«intéressant» ?" ;
00809 finp() ;
00810
00811 graphiques_R_png("../ht.png","../cs.png") ;
00812
00813 finsolution() ;
00814
00815 finblockquote() ;
00816
00817 ## -------------------------------------------------------------------------------------------
00818
00819 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # "Boxplots" et consor
00820
00821 ## -------------------------------------------------------------------------------------------
00822
00823 blockquote() ;
00824
00825 blockquote() ;
00826
00827 p("texte") ;
00828 echo " Qu'est-ce qu'un boxplot ? Comment tracer des boxplots en $R ? " ;
00829 echo " Avec ou sans encoche ?" ;
00830 finp() ;
00831
00832 p("texte") ;
00833 echo " Qu'est-ce qu'un ".em("beanplot")." ? Et un ".em("violinplot")." ? " ;
00834 echo " Et un ".em("stemleaf")." ? " ;
00835 finp() ;
00836
00837 finblockquote() ;
00838
00839 solution($numExo,$numSerie) ;
00840
00841 p("texte") ;
00842 echo "Un tracé en " ;
00843 echo href("http://en.wikipedia.org/wiki/Box_plot","boxplot") ;
00844 echo " ou \n" ;
00845 echo "graphique de Tukey \n" ;
00846 echo "est souvent nommé en France \n" ;
00847 echo href("http://fr.wikipedia.org/wiki/Bo%C3%AEte_%C3%A0_moustaches","«boite à moustaches»") ;
00848 echo ". Basé presque toujours (sauf pour Statistica) sur les \n" ;
00849 echo href("http://en.wikipedia.org/wiki/Quartile","quartiles").", il permet de représenter la " ;
00850 echo href("http://fr.wikipedia.org/wiki/Tendance_centrale","tendance centrale") ;
00851 echo " et la \n" ;
00852 echo href("http://fr.wikipedia.org/wiki/Crit%C3%A8res_de_dispersion","dispersion") ;
00853 echo " des données. " ;
00854 echo " Il existe des variantes. Nous fournissons ci-dessous quelques liens pour approfondir. " ;
00855 finp() ;
00856
00857 blockquote() ;
00858 table(1,10,"collapse") ;
00859 entetesTableau("Lien Explication") ;
00860
00861 tr() ; td("L") ; echo href("http://www.ilemaths.net/img/forum_img/0506/forum_506497_1.jpg","boxplot 01") ; fintd() ;
00862 td() ; echo "Visualisation de la moustache et des quartiles." ; fintd() ; fintr() ;
00863
00864 tr() ; td("L") ; echo href("http://onlinestatbook.com/2/graphing_distributions/boxplots.html","boxplot 02") ; fintd() ;
00865 td() ; echo "Détail de boxplot avec un quiz. Voir aussi ".href("http://onlinestatbook.com/2/graphing_distributions/boxplot_demo.html","boxplot_demo")."." ; fintd() ; fintr() ;
00866
00867 tr() ; td("L") ; echo href("http://nelsontouchconsulting.wordpress.com/2011/01/07/behold-the-box-plot/","boxplot 03") ; fintd() ; td() ; echo "Boxplot for small datasets (!)." ; fintd() ; fintr() ;
00868
00869 tr() ; td("L") ; echo href("http://web.pdx.edu/~stipakb/download/PA551/boxplot.html","boxplot 04") ; fintd() ; td() ; echo "Eplications sur les boxplots." ; fintd() ; fintr() ;
00870
00871 tr() ; td("L") ; echo href("http://support.sas.com/documentation/cdl/en/grstatproc/62603/HTML/default/viewer.htm#panelvbox-stmt.htm","boxplot 05") ; fintd() ; td() ; echo "Boxplot en SAS." ; fintd() ; fintr() ;
00872
00873 tr() ; td("L") ; echo href("http://fdidio.fr/blog/tag/boxplot/","boxplot 06") ; fintd() ; td() ; echo "Boxplots améliorés." ; fintd() ; fintr() ;
00874
00875 tr() ; td("L") ; echo href("http://ms.mcmaster.ca/peter/s2ma3/s2ma3_9798/boxplots.html","boxplot 07") ; fintd() ; td() ; echo "Boxplot pour une distribution normale." ; fintd() ; fintr() ;
00876
00877 tr() ; td("L") ; echo href("http://www.dundas.com/onlinedocumentation/winchart2005/BoxPlotChart.html","boxplot 08") ; fintd() ; td() ; echo "Boxplots de ".em("Dundas Data Visualization")."." ; fintd() ; fintr() ;
00878
00879 tr() ; td("L") ; echo href("http://www.itse.be/statistique2010/co/233_Cours_boxplot.html","boxplot 09") ; fintd() ; td() ; echo "Détails sur les boxplots modifiés." ; fintd() ; fintr() ;
00880
00881 tr() ; td("L") ; echo href("http://documentation.statsoft.com/STATISTICAHelp.aspx?path=Glossary/GlossaryTwo/2dgraphs/2DBoxPlotsWhiskers","boxplot 10") ; fintd() ;
00882 td() ; echo "Statistica propose ".b("en plus")." des boxplots basés sur la moyenne et l'écart-type. " ; fintd() ; fintr() ;
00883
00884 fintable() ;
00885 finblockquote() ;
00886
00887 p("texte") ;
00888 echo "Pour R, la fonction associée se nomme tout naturellement " ;
00889 echo hrrr("boxplot","graphics")." et comporte de nombreuses options." ;
00890 finp() ;
00891
00892 graphique_R_png("boxplot01.png","800") ;
00893 entree_R("boxplot01.r") ;
00894 sortie_R("boxplot01.sor") ;
00895
00896 p("texte") ;
00897 echo "Les boxplots sont très pratiques pour comparer des groupes, mais le paramètre ".b("varwidth")." n'est pas toujours très efficace." ;
00898 finp() ;
00899
00900 entree_R("boxplot02.r") ;
00901 graphique_R_png("boxplot02.png","800") ;
00902
00903 p("texte") ;
00904 echo "Les encoches (".em("notch")." en anglais) permettent de visualiser les " ;
00905 echo href("http://nobelis.eu/photis/Desgraph/boxplot.html","intervalles de confiance de la mediane","gvert nou") ;
00906 echo " mais présentent parfois des ".em("inversions")."." ;
00907 finp() ;
00908
00909 entree_R("boxplot03.r") ;
00910 graphique_R_png("boxplot03.png","800") ;
00911
00912 # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00913
00914 p("texte") ;
00915 echo "Les boxplots ne sont pas adaptés aux ".href("http://en.wikipedia.org/wiki/Bimodal_distribution","distributions bimodales")." ni " ;
00916 echo href("http://www.statsoft.fr/concepts-statistiques/glossaire/d/distribution-multimodale.html","multimodales").". " ;
00917 echo " Les beanplots le sont. Voir le ".href("http://www.jstatsoft.org/v28/c01/paper","PDF")." du package " ;
00918 echo hrrp("beanplot")." La principale fonction associée est bien sûr " ;
00919 echo hrrr("beanplot","beanplot").". Voici un exemple parlant :" ;
00920 finp() ;
00921
00922 graphique_R_png("beanplot01.png","800") ;
00923
00924 p("texte") ;
00925 echo "Les demi-beanplots sont très pratiques pour comparer des variables qualitatives binaires " ;
00926 finp() ;
00927
00928 graphiques_R_png("beanplot02.png","beanplot03.png") ;
00929
00930 p("texte") ;
00931 echo "Les ".href("http://en.wikipedia.org/wiki/Violin_plot","violinplots")." sont assez similaires aux beanplots." ;
00932 echo " Une implémentation en $R est dans le package " ;
00933 echo hrrp("vioplot").", fonction " ;
00934 echo hrrr("vioplot","vioplot").". " ;
00935 finp() ;
00936
00937 graphique_R_png("violinplot.png",600) ;
00938
00939 p("texte") ;
00940 echo "Une autre implémentation est fournie par " ;
00941 echo " la fonction ".hrrr("geom_violin","ggplot2")." du package ".hrrp("ggplot2")." avec " ;
00942 echo " des ".href("https://github.com/wch/ggplot2/wiki/geom_violin","possibilités intéressantes","rgouge").". " ;
00943 finp() ;
00944
00945
00946 # wvioplot n'existe plus ? http://www.r-bloggers.com/boxplots-and-beyond-iii-violin-plots/
00947 # ggplot2 forum. The trick is to use geom_violin(adju
00948 # pour bagplot = boxplot en 2D : http://www.statmethods.net/graphs/boxplot.html
00949
00950 # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00951
00952
00953 p("texte") ;
00954 echo "Contrairement aux précédents tracés, un diagramme " ;
00955 echo href("http://en.wikipedia.org/wiki/Stem-and-leaf_display","stemleaf") ;
00956 echo " ou en " ;
00957 echo em("tige et feuilles") ;
00958 echo " en français \n" ;
00959 echo " est une façon de trier et d'afficher les données de façon à faire ressortir des tendances, \n" ;
00960 echo "un peu comme un histogramme de classes, mais en mode texte. \n" ;
00961 finp() ;
00962
00963 entree_R("stem.r") ;
00964 sortie_R("stem.sor") ;
00965
00966 finsolution() ;
00967
00968 finblockquote() ;
00969
00970 ## -------------------------------------------------------------------------------------------
00971
00972 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Export de graphiques en PNG et PDF
00973
00974 ## -------------------------------------------------------------------------------------------
00975
00976 # retrouver les demi beanplot ?
00977
00978 blockquote() ;
00979
00980 p("texte") ;
00981 echo "On veut exporter un graphique en PNG, en PS ou EPS, en PDF. Quelle(s) solution(s) avec $R ?" ;
00982 finp() ;
00983
00984 p("texte") ;
00985 echo "Et avec Rstudio ?" ;
00986 finp() ;
00987
00988 solution($numExo,$numSerie) ;
00989
00990 p("texte") ;
00991 echo "Pour exporter un graphique, il faut utiliser " ;
00992 echo href("lls_grdevices.sor","les fonctions") ;
00993 echo " du package ".hrrp("grDevices")." et en particulier " ;
00994 echo hrrr("png","grDevices").", " ;
00995 echo hrrr("postscript","grDevices")." et " ;
00996 echo hrrr("pdf","grDevices").". " ;
00997 finp() ;
00998
00999 pre_fichier("pngps.txt","cadre") ;
01000
01001
01002 p("texte") ;
01003 echo "Voilà concrètement comment on fait :" ;
01004 finp() ;
01005
01006 ol() ;
01007
01008 debutli() ;
01009 p() ;
01010 echo "On ouvre la sortie graphique avec l'une des fonctions citées." ;
01011 finp() ;
01012 finli() ;
01013
01014
01015 debutli() ;
01016 p() ;
01017 echo "On exécute les instructions qui produisent le(s) graphique(s)." ;
01018 finp() ;
01019 finli() ;
01020
01021
01022 debutli() ;
01023 p() ;
01024 echo "On ferme le fichier avec ".b("dev.off()")."." ;
01025 finp() ;
01026 finli() ;
01027
01028 finol() ;
01029
01030
01031 p("texte") ;
01032 echo "Par exemple, pour produire un fichier png correspondant au deux boxplots précédents roses et vert, " ;
01033 echo " avec un fichier nommé \"demoboxplot.png\", de largeur 1400 et de hauteur 100, le code à écrire est :" ;
01034 finp() ;
01035
01036 entree_R("boxplotpng.r") ;
01037
01038 p("texte") ;
01039 echo "Le fichier résultat est visible ".href("demoboxplot.png","ici").". " ;
01040 finp() ;
01041
01042 p("texte") ;
01043 echo b("Remarque :")." il faut éventuellement changer de chemin d'accès avec ".hrrr("getwd","base","setwd()")." avant de définir " ;
01044 echo " le fichier graphique, ou indiquer le chemin d'accès. Par exemple :" ;
01045 finp() ;
01046
01047 pre_fichier("setwd.txt","cadre") ;
01048
01049 finsolution() ;
01050
01051 finblockquote() ;
01052
01053 ## -------------------------------------------------------------------------------------------
01054
01055 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Heatmap, vous avez dit heatmap ?
01056
01057 ## -------------------------------------------------------------------------------------------
01058
01059 blockquote() ;
01060
01061 p("texte") ;
01062 echo "Est-ce facile de tracer des ".em("heatmaps améliorées")." en $R avec des dendrogrammes autour comme ci-dessous ?" ;
01063 finp() ;
01064
01065 blockquote() ;
01066 p("texte") ;
01067 $img = "heatmap.png" ;
01068 echo href($img,img($img,"heatmap",400)) ;
01069 finp() ;
01070 finblockquote() ;
01071
01072 solution($numExo,$numSerie) ;
01073
01074 p("texte") ;
01075 echo "Il n'existe pas une implémentation de la notion de ".em("«heatmap améliorée»")." mais plutôt une bonne dizaine. " ;
01076 echo " La consultation de " ;
01077 echo href("http://finzi.psych.upenn.edu/nmz.html","R site search","gbleuf nou") ;
01078 echo " à ce sujet est édifiante : " ;
01079 echo href("http://finzi.psych.upenn.edu/cgi-bin/namazu.cgi?query=heatmap&max=100&result=normal&sort=score&idxname=functions&idxname=vignettes&idxname=views","430 liens") ;
01080 echo " en novembre 2013 ! " ;
01081 echo " Il y a par exemple " ;
01082 echo " la fonction " ;
01083 echo hrrr("heatmap","stats")." du package ".hrrp("stats").", \n" ;
01084 echo " la fonction ".hrrr("heatmap-methods","apcluster","heatmap()")." du package ".hrrp("apcluster").", \n" ;
01085 echo hrrr("heatmap.3","GMD","heatmap()")." du package ".hrrp("GMD").", \n" ;
01086 echo hrrr("heatmap.2","gplots","heatmap()")."du package ".hrrp("gplots").", \n" ;
01087 echo " et enfin (et surtout ?) les fonctions \n" ;
01088 echo b("GO2heatmap")." et " ;
01089 echo b("KEGG2heatmap()")." du package ".href("https://bioconductor.org/packages/release/bioc/html/annotate.html","annotate")."." ;
01090 finp() ;
01091
01092 p("texte") ;
01093 echo "La difficuté en général n'est pas le tracé, mais la construction des données. Voici un exemple peu commenté :" ;
01094 finp() ;
01095
01096 entree_R("heatmap01.r") ;
01097
01098 p("texte") ;
01099 echo "Et son résultat :" ;
01100 finp() ;
01101
01102 graphique_R_png("heatmap01.png",600) ;
01103
01104 p("texte") ;
01105 echo "Malgré un nombre de paramètres très important pour " ;
01106 echo " la fonction " ;
01107 echo hrrr("heatmap","stats")." du package ".hrrp("stats").", l'utilisation en est assez simple, comme on pourra s'en " ;
01108 echo " convaincre avec ".b("example(heatmap)").". " ;
01109 finp() ;
01110
01111 pre_fichier("heatmap_par.txt","cadre") ;
01112
01113
01114 p("texte") ;
01115 echo "La préparation des données et le choix des paramètres de filtrage pour la bioinformatique via $R sont assez bien expliqués dans les " ;
01116 echo " ouvrages suivants :" ;
01117 finp() ;
01118
01119 $book1 = "http://www.springer.com/statistics/life+sciences%2C+medicine+%26+health/book/978-0-387-77239-4" ;
01120 $book2 = "http://www.springer.com/computer/bioinformatics/book/978-0-387-25146-2" ;
01121
01122 blockquote() ;
01123 table(0,20,"collapse") ;
01124
01125 tr() ;
01126 td("C") ; echo href($book1,img("biocase.jpg","",145)) ; fintd() ;
01127 td("C") ; echo href($book2,img("bioinfo.jpg","",145)) ; fintd() ;
01128 fintr() ;
01129
01130 tr() ;
01131 td("C") ; echo href($book1,"Bioconductor Case Studies")." (2008)" ; fintd() ;
01132 td("C") ; echo href($book2,"Bioinformatics[...] using R[...]")." (2005)" ; fintd() ;
01133 fintr() ;
01134
01135 fintable() ;
01136 finblockquote() ;
01137
01138
01139 p("texte") ;
01140 echo "Nous vous laissons le soin de lire ces ouvrages pour trouver dans lequel des deux nous avons recopié les instructions " ;
01141 echo " pour produire la heatmap améliorée des données ".href("http://www.bioconductor.org/packages/release/data/experiment/html/ALL.html","ALL","gvert nou").". " ;
01142 finp() ;
01143
01144 # Bioconductor Case Studies pages 30, 124, 140 et 200
01145 # Bioinformatics[...] using R[...] pages 168, 228, 245.
01146
01147 finsolution() ;
01148
01149 finblockquote() ;
01150
01151 ## -------------------------------------------------------------------------------------------
01152
01153 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Configuration de $R et des graphiques
01154
01155 ## -------------------------------------------------------------------------------------------
01156
01157 blockquote() ;
01158
01159 p("texte") ;
01160 echo "Comment configurer $R en général ? Et pour les graphiques ? Où mettre des options courantes de $R ?" ;
01161 echo " Quelles sont ces options ?" ;
01162 finp() ;
01163
01164 solution($numExo,$numSerie) ;
01165
01166 p("texte") ;
01167 echo "Si on dit ".b(".Rprofile.site")." et ".b(".Rprofile").", tout est dit !" ;
01168 finp() ;
01169
01170
01171 p("texte") ;
01172 echo "Le fichier ".b(".Rprofile")." est un fichier texte qui contient du code $R que $R consulte automatiquement. Il peut y en avoir un " ;
01173 echo " pour l'utilisateur (configuration générale) et un dans le sous-répertoire courant (configuration spécialisée). De plus $R permet de " ;
01174 echo " définir des fonctions ".b(".First()")." et ".b(".Last()")." bien utiles, par exemple pour afficher un message de bienvenue, ou pour " ;
01175 echo " sauvegarder de façon incrémentale tout le travail effectué. Voici quelques liens pour approfondir cette notion de profil :" ;
01176 finp() ;
01177
01178 blockquote() ;
01179 table(1,10,"collapse") ;
01180 tr("tajaunec") ;
01181 $url = "http://www.statmethods.net/interface/customizing.html" ;
01182 $court = "customizing R" ;
01183 $cmt = "explications du site Quick-R" ;
01184 td() ; echo href($url,$court,"gvertf nou") ; fintd() ;
01185 td() ; echo $cmt ; fintd() ;
01186 fintr() ;
01187 tr("tajaunec") ;
01188 $url = "http://www.dummies.com/how-to/content/how-to-configure-r.html" ;
01189 $court = "configure R" ;
01190 $cmt = "R for dummies" ;
01191 td() ; echo href($url,$court,"gvertf nou") ; fintd() ;
01192 td() ; echo $cmt ; fintd() ;
01193 fintr() ;
01194 tr("tajaunec") ;
01195 $url = "http://scs.math.yorku.ca/index.php/Rprofile" ;
01196 $court = "Rprofile" ;
01197 $cmt = "York Wiki for statistical consulting" ;
01198 td() ; echo href($url,$court,"gvertf nou") ; fintd() ;
01199 td() ; echo $cmt ; fintd() ;
01200 fintr() ;
01201 fintable() ;
01202 finblockquote() ;
01203
01204 p("texte") ;
01205 echo "Comme déjà dit plus haut, les options générales se gèrent via " ;
01206 echo " la fonction ".hrrr("options") ;
01207 echo " du package ".hrrp("base")." et les options graphiques avec " ;
01208 echo " la fonction ".hrrr("par","graphics") ;
01209 echo " du package ".hrrp("graphics").". " ;
01210 finp() ;
01211
01212
01213 finsolution() ;
01214
01215 finblockquote() ;
01216
01217 ## -------------------------------------------------------------------------------------------
01218
01219 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Présentation des packages graphics, beanplot, lattice, grid, plotrix et ggplot2.
01220
01221 ## -------------------------------------------------------------------------------------------
01222
01223 blockquote() ;
01224
01225 p("texte") ;
01226 echo "Que contiennent les packages graphics, beanplot, lattice, grid, plotrix et ggplot2 ?" ;
01227 finp() ;
01228
01229 p("texte") ;
01230 echo "Quelles en sont les fonctions les plus importantes ?" ;
01231 finp() ;
01232
01233 solution($numExo,$numSerie) ;
01234
01235 p("texte") ;
01236 echo "A part pour beanplot, il est illusoire de vouloir présenter ces packages en peu de temps " ;
01237 echo " donc à moins d'y passer une bonne dizaine d'heures, il est difficile de connaitre ces packages. " ;
01238 echo " Le tableau suivant indique le nombre d'objets dans chaque package " ;
01239 echo " et fournit des liens vers la liste des objets de ces packages." ;
01240 finp() ;
01241
01242 blockquote() ;
01243 table(1,15,"collapse") ;
01244 entetesTableau("Package Nb_objets Lien","bleu_pastel") ;
01245 $ldp = preg_split("/\s+/", "graphics beanplot lattice grid plotrix ggplot2") ;
01246 $nbo = preg_split("/\s+/",trim(" 87 1 148 188 144 240")) ;
01247 $ido = -1 ;
01248 foreach ($ldp as $pkg) {
01249 $ido++ ;
01250 tr() ;
01251 td("","tagris") ; echo $pkg ; fintd() ;
01252 td("R","tajaunec") ; echo $nbo[$ido]." " ; fintd() ;
01253 $fic = "lls_".$pkg.".sor" ;
01254 td("","tarose") ; echo href($fic,"","grouge nou") ; fintd() ;
01255 fintr() ;
01256 } # fin pour ;
01257 fintable() ;
01258 finblockquote() ;
01259 finsolution() ;
01260
01261 finblockquote() ;
01262
01263 ## -------------------------------------------------------------------------------------------
01264
01265 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Bibliographie graphiques $R
01266
01267 ## -------------------------------------------------------------------------------------------
01268
01269 blockquote() ;
01270
01271 p("texte") ;
01272 echo "Y a-t-il beaucoup de livres sur les graphiques en $R ?" ;
01273 finp() ;
01274
01275 solution($numExo,$numSerie) ;
01276
01277 p("texte") ;
01278 echo "Oui et non !" ;
01279 finp() ;
01280
01281
01282 p("texte") ;
01283 echo "En fait, la plupart des livres qui traitent de $R présentent au passage les graphiques de $R. " ;
01284 echo " Il n'y a par contre que quelques ouvrages spécialisés " ;
01285 echo " sur les graphiques en $R ou les packages graphiques de $R (moins d'une vingtaine en tout, en novembre 2013). En voici une sélection personnelle :" ;
01286 finp() ;
01287
01288 blockquote() ;
01289 table(0,20,"collapse") ;
01290
01291 tr() ;
01292 td("C") ; echo href("http://www.amazon.fr/R-Graphics-Cookbook-Winston-Chang/dp/1449316956/",img("rgraphicscookbook.jpg","",100)) ; fintd() ;
01293 td("C") ; echo href("http://www.crcpress.com/product/isbn/9781439831762",img("rgraphics.jpg","",145)) ; fintd() ;
01294 td("C") ; echo href("http://www.packtpub.com/r-graph-cookbook/book",img("rgcook.png","",120)) ; fintd() ;
01295 fintr() ;
01296
01297 tr() ;
01298 td("C") ; echo href("http://www.amazon.fr/R-Graphics-Cookbook-Winston-Chang/dp/1449316956/","R graphics cookbook") ; fintd() ;
01299 td("C") ; echo href("http://www.crcpress.com/product/isbn/9781439831762","R graphics") ; fintd() ;
01300 td("C") ; echo href("http://www.packtpub.com/r-graph-cookbook/book","R graphs cookbook") ; fintd() ;
01301 fintr() ;
01302
01303 tr() ;
01304 #td("C") ; echo href("http://eu.wiley.com/WileyCDA/WileyTitle/productCd-111802639X.html",img("takezawa.jpg","",150)) ; fintd() ;
01305 td("C") ; echo href("http://www.amazon.fr/Ggplot2-Elegant-Graphics-Data-Analysis/dp/0387981403/",img("ggplot2.png","",110)) ; fintd() ;
01306 td("C") ; echo href("http://www.amazon.fr/Pro-Data-Visualization-using-JavaScript/dp/1430258063",img("proviz.jpg","",110)) ; fintd() ;
01307 td("C") ; echo href("http://www.amazon.fr/Lattice-Multivariate-Data-Visualization-Use/dp/0387759689/",img("lattice.png","",110)) ; fintd() ;
01308 fintr() ;
01309
01310 tr() ;
01311 #td("C") ; echo href("http://eu.wiley.com/WileyCDA/WileyTitle/productCd-111802639X.html","Takezawa") ; fintd() ;
01312 td("C") ; echo href("http://www.amazon.fr/Ggplot2-Elegant-Graphics-Data-Analysis/dp/0387981403/","Wickham") ; fintd() ;
01313 td("C") ; echo href("http://www.amazon.fr/Pro-Data-Visualization-using-JavaScript/dp/1430258063","Barker") ; fintd() ;
01314 td("C") ; echo href("http://www.amazon.fr/Lattice-Multivariate-Data-Visualization-Use/dp/0387759689/","Sarkar") ; fintd() ;
01315 fintr() ;
01316
01317 fintable() ;
01318 finblockquote() ;
01319
01320
01321 p("texte") ;
01322 echo b("Remarque : ") ;
01323 finp() ;
01324
01325 blockquote() ;
01326 p("texte") ;
01327 echo "Tous les graphiques de l'ouvrage ".em("R Graphics (Second Edition)")." de Paul Murrell, publié en 2011, " ;
01328 echo " sont visibles, " ;
01329 br() ;
01330 echo " avec le code $R associé pour les reproduire, à l'adresse " ;
01331 echo href("https://www.stat.auckland.ac.nz/~paul/RG2e/","RG2e").". " ;
01332 finp() ;
01333
01334 p("texte") ;
01335 echo "En particulier le ".href("https://www.stat.auckland.ac.nz/~paul/RG2e/chapter4.html","chapitre 4") ;
01336 echo " présente les graphiques générés avec le package ".hrrp("lattice") ;
01337 echo " et le ".href("https://www.stat.auckland.ac.nz/~paul/RG2e/chapter5.html","chapitre 5") ;
01338 echo " présente les graphiques générés avec le package ".hrrp("ggplot2")."." ;
01339 finp() ;
01340
01341 finblockquote() ;
01342
01343 finsolution() ;
01344
01345 finblockquote() ;
01346
01347 ## -------------------------------------------------------------------------------------------
01348
01349 finPageExercices($numSerie) ; # contient finSection() et finPage() ; la fonction est dans intror_inc.php
01350
01351 ?>
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)