RVisualisation

R – Visualisation 3D (#2)

A l’issue du billet précédent, les données anthropométriques des kayakistes ayant participé aux JO depuis 2000 ont été représentées en 3D:

  • abscisse (x): poids en kg
  • ordonnée (y) : taille en cm
  • hauteur (z) : sexe (H/F)

L’idée était de visualiser la différence de corpulence entre les compétiteurs des disciplines slalom et sprint:

jo_ck_logit

La représentation étant statique, cela a donc imposé le choix d’un angle de projection via le paramètre « angle » de la commande scatterplot3d.

Ici, les données était simples et le recours à la 3D n’était pas impératif. On aurait pu tout aussi bien recourir à deux représentations 2D – la première pour les femmes, la seconde pour les hommes.

Néanmoins, dans certains cas plus complexes, la 3D apporte une réelle valeur ajoutée et le choix de l’angle de projection peut s’avérer problématique.

Le package rgl résout ce problème et offrant la possibilité de créer des représentations 3D interactives. Ces dernières étant exportable au format WebGL qui est supporté par la majorité des navigateurs internet:

 
> prerio <- jo_ck_prerio[,c("TAILLE","POIDS","SEXE","TYPE_EPREUVE")]
> prerio$COLOR <- ifelse(prerio$TYPE_EPREUVE == "Slalom", "blue","forestgreen")
> prerio <- prerio[,c("TAILLE","POIDS","SEXE","COLOR")]
>
> rio <- jo_ck_rio[,c("TAILLE","POIDS","SEXE","TYPE_EPREUVE")]
> rio$COLOR <- ifelse(rio$TYPE_EPREUVE == "Slalom", "blue","forestgreen")
> rio$pred <- as.factor(rio_pred.bin)
>
> rio$COLOR[which(rio$pred!=rio$TYPE_EPREUVE & rio$TYPE_EPREUVE=="Slalom")] <- "red"
> rio$COLOR[which(rio$pred!=rio$TYPE_EPREUVE & rio$TYPE_EPREUVE=="Sprint")] <- "yellow"
>
> rio <- rio[,c("TAILLE","POIDS","SEXE","COLOR")]
>
> jo_ck <- rbind(prerio,rio)
>

>
> library(rgl)
> library(rglwidget)
>
> plot3d(jo_ck$POIDS, jo_ck$TAILLE, jo_ck$SEXE,
+ type="s",
+ col=jo_ck$COLOR,
+ size=1, box=T,axes=F,
+ xlab = "Poids (kg)",
+ ylab = "Taille (cm)",
+ zlab = "")
> 
> axes3d(c('x', 'y'))
> zlabels <- c("Femmes","Hommes")
> axes3d("z", labels=c("Femmes","Hommes"), nticks=1)
> 
> browseURL(paste("file://", writeWebGL(dir=file.path("C:/RTI/Stats", "3DGraph"), width=830), sep=""))
> 

Compétiteurs Individuels Canoe-Kayak au JO depuis 2000

legende

On peut opérer des rotations sur le graphique à l’aide de la souris. On peut aussi zoomer à l’aide de la molette de la souris. En revanche, il ne semble pas y avoir d’équivalent au paramètre « pch » permettant de modifier le type des points. De même, les légendes et titres doivent être gérés à part.

 

 

 

 

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *