Categories

Archives

Billet

Un graphique

Billet publié le 22/09/2009

Je ne sais comment nommer ce type de graphiques : en abscisses, des années, et en ordonnées, des personnes, le graphique lui-même consistant à indiquer (en noir) que la personne est vivante (ou présente)… Une frise ?
N’ayant pas de nom, il est somme toute normal d’avoir du mal à le créer avec R, le logiciel d’analyse statistique “open source”. L’année dernière, j’avais bricolé un code affreux pour aboutir à quelque chose de potable. Je voulais un peu plus simple.

Démarrons avec ceci :

  date Pass Cixo Cast
1 1969    1    1   NA
2 1970    1    1    1
3 1971    1    1    1
4 1972   NA    1    1
5 1973   NA   NA    1

Dans l’institution étudiée, Jean-Claude “Pass” et Hélène “Cixo” sont présents dès 1969 (mais seront tous deux absents en 1973), tandis que Robert “Cast” arrive en 1970. Il est toujours là en 1973.

Appelons “soci” cette chose.
Dans R, le package “reshape” permet de transformer ces données en quelque chose de plus aisé à travailler :
soci<-melt(soci,id=c("date"))
Ce qui donne :

   date variable value
1  1969     Pass     1
2  1970     Pass     1
3  1971     Pass     1
4  1972     Pass    NA
5  1973     Pass    NA
6  1969     Cixo     1
7  1970     Cixo     1
8  1971     Cixo     1
9  1972     Cixo     1
10 1973     Cixo    NA
11 1969     Cast    NA
12 1970     Cast     1
13 1971     Cast     1
14 1972     Cast     1
15 1973     Cast     1

Pour obtenir la frise ci-dessous, j’ai chargé le package “ggplot2”
Les instructions utilisées sont les suivantes. Les répétitions de theme_blank() peuvent sans doute être éliminées.
qplot(date,value,data=soci,geom="line",group=variable)
+ facet_grid(variable~.,scales="free",space="free")
+ opts(
panel.grid.minor=theme_blank(),
panel.grid.major=theme_blank(),
panel.background=theme_blank(),
axis.line=theme_blank(),
panel.border=theme_blank(),
axis.title.y=theme_blank(),
axis.text.y=theme_blank(),
strip.text.y=theme_text())

Tout ça pour ceci :
soci

J’ai conscience de la futilité d’un tel exemple, mais cette représentation graphique, appliquée à une institution plus nombreuse, sur un plus grand nombre d’année, devrait permettre de visualiser de manière synthétique les arrivées et les départs, la permanence d’une partie du personnel et la bougeotte d’une autre partie.

On peut aussi ajouter à cette représentation d’autres informations. Par exemple, “0” indiquerait un statut d’assistant, “1” un statut de maître de conférences et “2” un statut de professeur.

  date Pass Cixo Cast
1 1969    0    1   NA
2 1970    1    2    0
3 1971    1    2    1
4 1972   NA    2    1
5 1973   NA   NA    2

On pourrait ainsi repérer des changements de statut dans la carrière :

soci2
Les instructions (un peu tordues, car je demande le dessin d’une ligne d’épaisseur zéro)…
qplot(date,value,data=soci,geom="line",group=variable,lwd=0)
+ geom_rect(aes(xmin = date-0.5, xmax = date + 0.5, ymin = 0, ymax = 2.5, fill=factor(value)))
+ facet_grid (variable ~ .,scales="free",space="free")
+ opts(
panel.grid.minor=theme_blank(),
panel.grid.major=theme_blank(),
panel.background=theme_blank(),
axis.line=theme_blank(),
panel.border=theme_blank(),
axis.title.y=theme_blank(),
axis.text.y=theme_blank(),
strip.text.y=theme_text(),
legend.position = "none")
+ scale_fill_manual(values = c("NA"="white","0"="lightgrey","1" = "darkgrey","2"="black"))
+ scale_y_continuous(breaks=NA)

Note : Pour aller plus loin, le blog http://learnr.wordpress.com/ (attentif à l’élégance graphique) contient nombre d’exemplesqui m’ont énormément servi.

[yarpp]

5 commentaires

Un commentaire par Lory (22/09/2009 à 18:15)

Une frise chronologique ?

Un commentaire par Baptiste Coulmont (22/09/2009 à 18:42)

>Lory : probablement… il doit y avoir un joli nom scientifique quelque part quand même.

Un commentaire par Nicolas (23/09/2009 à 18:56)

En anglais, on dit “timeline”, ce qui est simple. En français, “frise chronologique” rappelle les murs des classes des écoles primaires, et ne fait pas très sérieux. J’ai ce type de graphique dans ma thèse, et j’ai inventé (ou réinventé?) le néologisme de chronographie. Il me semblait que c’était explicite et étymologiquement correct, et que ça fait plus sérieux que “frise”. Si tu veux m’aider à répandre le terme… :-)

Un commentaire par Baptiste Coulmont (23/09/2009 à 19:33)

>Nicolas : chronographie me semble un peu trop large.
Qu’est-ce que cela donne dans ta thèse ? Tu m’envoies un morceau ?

Un commentaire par Nicolas (25/09/2009 à 9:25)

Si tu as mieux, je suis preneur pour la publication… Je t’envoie celles que j’ai faites dans ma thèse, faites avec un petit programme pour mac appelé, étrangement, Timeline.