{"id":733,"date":"2016-11-01T11:15:13","date_gmt":"2016-11-01T11:15:13","guid":{"rendered":"http:\/\/blog.tiran.info\/?p=733"},"modified":"2017-12-05T14:23:37","modified_gmt":"2017-12-05T13:23:37","slug":"r-visualisation-3d-2","status":"publish","type":"post","link":"https:\/\/blog.tiran.stream\/?p=733","title":{"rendered":"R &#8211; Visualisation 3D (#2)"},"content":{"rendered":"<p>A l&rsquo;issue du <a href=\"http:\/\/blog.tiran.info\/regression-logistique-avec-r\" target=\"_blank\" rel=\"noopener\">billet pr\u00e9c\u00e9dent<\/a>, les donn\u00e9es anthropom\u00e9triques des kayakistes ayant particip\u00e9 aux JO depuis 2000 ont \u00e9t\u00e9 repr\u00e9sent\u00e9es en 3D:<\/p>\n<ul>\n<li style=\"text-align: justify;\">abscisse (x): poids en kg<\/li>\n<li style=\"text-align: justify;\">ordonn\u00e9e (y) : taille en cm<\/li>\n<li style=\"text-align: justify;\">hauteur (z) : sexe (H\/F)<\/li>\n<\/ul>\n<p>L&rsquo;id\u00e9e \u00e9tait de visualiser la diff\u00e9rence de corpulence entre les comp\u00e9titeurs des disciplines slalom et sprint:<\/p>\n<p><a href=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2016\/10\/jo_ck_logit-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-730\" src=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2016\/10\/jo_ck_logit-1.png\" alt=\"jo_ck_logit\" width=\"600\" height=\"503\" \/><\/a><\/p>\n<p>La repr\u00e9sentation\u00a0\u00e9tant statique, cela a donc impos\u00e9\u00a0le choix d&rsquo;un angle de projection\u00a0via le param\u00e8tre \u00ab\u00a0angle\u00a0\u00bb de la commande scatterplot3d.<\/p>\n<p>Ici, les donn\u00e9es \u00e9tait simples et le recours \u00e0 la 3D n&rsquo;\u00e9tait pas imp\u00e9ratif. On aurait pu tout aussi bien recourir \u00e0 deux\u00a0repr\u00e9sentations 2D &#8211; la premi\u00e8re pour les femmes, la seconde pour les hommes.<\/p>\n<p>N\u00e9anmoins, dans certains cas plus complexes, la 3D\u00a0apporte une r\u00e9elle valeur ajout\u00e9e et le choix de l&rsquo;angle de projection peut s&rsquo;av\u00e9rer probl\u00e9matique.<\/p>\n<p>Le package rgl r\u00e9sout ce probl\u00e8me et offrant la possibilit\u00e9 de cr\u00e9er des <a href=\"https:\/\/fr.wikipedia.org\/wiki\/3D_interactive\" target=\"_blank\" rel=\"noopener\">repr\u00e9sentations 3D interactives<\/a>. Ces derni\u00e8res \u00e9tant exportable au <a href=\"https:\/\/fr.wikipedia.org\/wiki\/WebGL\" target=\"_blank\" rel=\"noopener\">format WebGL<\/a> qui est support\u00e9 par la majorit\u00e9 des navigateurs internet:<\/p>\n<pre class=\"brush: js; ruler: true;\"> \r\n&gt; prerio &lt;- jo_ck_prerio[,c(&quot;TAILLE&quot;,&quot;POIDS&quot;,&quot;SEXE&quot;,&quot;TYPE_EPREUVE&quot;)]\r\n&gt; prerio$COLOR &lt;- ifelse(prerio$TYPE_EPREUVE == &quot;Slalom&quot;, &quot;blue&quot;,&quot;forestgreen&quot;)\r\n&gt; prerio &lt;- prerio[,c(&quot;TAILLE&quot;,&quot;POIDS&quot;,&quot;SEXE&quot;,&quot;COLOR&quot;)]\r\n&gt;\r\n&gt; rio &lt;- jo_ck_rio[,c(&quot;TAILLE&quot;,&quot;POIDS&quot;,&quot;SEXE&quot;,&quot;TYPE_EPREUVE&quot;)]\r\n&gt; rio$COLOR &lt;- ifelse(rio$TYPE_EPREUVE == &quot;Slalom&quot;, &quot;blue&quot;,&quot;forestgreen&quot;)\r\n&gt; rio$pred &lt;- as.factor(rio_pred.bin)\r\n&gt;\r\n&gt; rio$COLOR[which(rio$pred!=rio$TYPE_EPREUVE &amp; rio$TYPE_EPREUVE==&quot;Slalom&quot;)] &lt;- &quot;red&quot;\r\n&gt; rio$COLOR[which(rio$pred!=rio$TYPE_EPREUVE &amp; rio$TYPE_EPREUVE==&quot;Sprint&quot;)] &lt;- &quot;yellow&quot;\r\n&gt;\r\n&gt; rio &lt;- rio[,c(&quot;TAILLE&quot;,&quot;POIDS&quot;,&quot;SEXE&quot;,&quot;COLOR&quot;)]\r\n&gt;\r\n&gt; jo_ck &lt;- rbind(prerio,rio)\r\n&gt;\r\n\r\n&gt;\r\n&gt; library(rgl)\r\n&gt; library(rglwidget)\r\n&gt;\r\n&gt; plot3d(jo_ck$POIDS, jo_ck$TAILLE, jo_ck$SEXE,\r\n+ type=&quot;s&quot;,\r\n+ col=jo_ck$COLOR,\r\n+ size=1, box=T,axes=F,\r\n+ xlab = &quot;Poids (kg)&quot;,\r\n+ ylab = &quot;Taille (cm)&quot;,\r\n+ zlab = &quot;&quot;)\r\n&gt; \r\n&gt; axes3d(c(&#039;x&#039;, &#039;y&#039;))\r\n&gt; zlabels &lt;- c(&quot;Femmes&quot;,&quot;Hommes&quot;)\r\n&gt; axes3d(&quot;z&quot;, labels=c(&quot;Femmes&quot;,&quot;Hommes&quot;), nticks=1)\r\n&gt; \r\n&gt; browseURL(paste(&quot;file:\/\/&quot;, writeWebGL(dir=file.path(&quot;C:\/RTI\/Stats&quot;, &quot;3DGraph&quot;), width=830), sep=&quot;&quot;))\r\n&gt; \r\n<\/pre>\n<h3 style=\"text-align: center;\">Comp\u00e9titeurs Individuels Canoe-Kayak au JO depuis 2000<\/h3>\n<p><a href=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2016\/10\/L\u00e9gende.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-771\" src=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2016\/10\/L\u00e9gende.png\" alt=\"legende\" width=\"195\" height=\"125\" \/><\/a><\/p>\n<div style=\"height: 800px; overflow: hidden;\"><iframe loading=\"lazy\" style=\"position: relative; top: -100px;\" src=\"https:\/\/blog.tiran.stream\/wp-content\/uploads\/2016\/10\/index.html\" width=\"100%\" height=\"800px\" frameborder=\"0\" scrolling=\"no\"><\/iframe><\/div>\n<p>On peut op\u00e9rer des rotations sur le graphique \u00e0 l&rsquo;aide de la souris. On peut aussi\u00a0zoomer \u00e0 l&rsquo;aide de la molette de la souris. En revanche, il ne semble pas\u00a0y avoir d&rsquo;\u00e9quivalent au param\u00e8tre \u00ab\u00a0pch\u00a0\u00bb permettant de modifier le type des points. De m\u00eame, les l\u00e9gendes et titres doivent \u00eatre g\u00e9r\u00e9s \u00e0 part.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A l&rsquo;issue du billet pr\u00e9c\u00e9dent, les donn\u00e9es anthropom\u00e9triques des kayakistes ayant particip\u00e9 aux JO depuis 2000 ont \u00e9t\u00e9 repr\u00e9sent\u00e9es en<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[12,17],"tags":[],"class_list":["post-733","post","type-post","status-publish","format-standard","hentry","category-r","category-visualisation"],"_links":{"self":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts\/733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=733"}],"version-history":[{"count":2,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts\/733\/revisions"}],"predecessor-version":[{"id":1274,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=\/wp\/v2\/posts\/733\/revisions\/1274"}],"wp:attachment":[{"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiran.stream\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}