Un graphique interactif

jeudi 16 juillet 2009, par jps29

Un graphique peut être très surchargé :

JPEG - 196.1 ko

Une solution (non imprimable bien sur) existe : le SVG.

Mais je travaille sur Mac OSX et là, surprise, Safari montre bien le graphique généré mais laisse de coté (pire, met à la poubelle) les légendes des points. Sur PC, je n’ai pas essayé ; en tout cas, Firefox s’en tire bien sur Mac et ce devrait être identique sur PC : il permet de lire les informations en passant sur les points.

Donc, pour profiter du graphique, utilisez Firefox.

Le graphique représente le nombre d’adhérents de la Fédération nationale catholique dans le Finistère à deux dates, dans les années Trente. On peut ainsi voir l’évolution par paroisse. Là où l’organisation progresse, là où elle régresse. J’ai inclus une droite en rouge pour séparer en deux le graphique et permettre une visualisation immédiate de ces évolutions.

La représentation en SVG évite la surcharge et permet de donner, par paroisse, les effectifs aux deux dates, ce qui est évidemment impossible sur l’autre graphique.

Voici le script, adapté de celui que j’ai trouvé ici

library("RSVGTipsDevice")
######
devSVGTips("fnc.svg", height=10, width=10, toolTipMode=1, title="FNC en 1933 et 1938")
par(font.lab=8,font.main=9,cex=1.5)
#########
fnc<-read.table("AdhFNC3338.csv", sep =";",  header= T,  row.names=1)
attach(fnc)
fnc[is.na(fnc)] <- 0  #remplacer les valeurs vides par 0
fnc<-fnc[fnc[, 2]>0, ] #ne prendre en compte que les communes avec une valeur supérieure à O
fnc[1:5,]
x<-fnc[,1]
y<-fnc[,2]

maximum33<-max(fnc[,1])
maximum33
maximum38<-max(fnc[,2])
maximum38


##

plot(x~y,ylim=c(10, maximum38), ,xlim=c(10,maximum33),log = "xy",
type="n", xlab="1933",ylab="1938", main="FNC")
grid()

cnames<-rownames(fnc)
fnc.1<-cbind(cnames,fnc)
for (i in seq(len=nrow(fnc.1))) {
        setSVGShapeToolTip(title=fnc.1[i,"cnames"],
                desc=paste(" 1933 : ", fnc.1[i,"En_1933"]," ,1938 : ", fnc.1[i,"En_1938"]))
        points(fnc.1[i,"En_1933"], fnc.1[i,"En_1938"], pch="o",
                cex=2, col=ifelse(fnc.1[i,"En_1933"]>300,"blue","red"))
}

abline(c(0, 1), col="red") #ligne médiane

dev.off()

#####

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message