Plusieurs graphiques dans la même fenêtre

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Plusieurs graphiques dans la même fenêtre

Messagepar Aurélien Madouasse » 10 Mai 2007, 15:54

Bonjour,

J'aimerais pouvoir avoir dans la même fenêtre un histogramme de la distribution de ma variable et le boxplot associé. J'ai un peu de mal à m'en sortir! J'utilise le code suivant :

Code : Tout sélectionner

jpeg(file="essai1.jpg",width=1000,height=1000)

m<-matrix(1:2,2,1)

layout(m,heights=c(1,4))

boxplot(log(rec$cell_count),xlim=c(0,10),horizontal=T,border="blue",frame.plot=F)

hist(log(rec$cell_count),breaks=200,xlim=c(0,10),main=NULL)

dev.off()



Voir le graphique


Je voudrais:

- Pouvoir aligner les axes des abscisses,
- Pouvoir jouer sur la taille relative des 2 graphiques de manière plus précise


Aurélien

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 10 Mai 2007, 18:39

ceci devrait pouvoir t'aider :)

Code : Tout sélectionner

N <- 2000
x <- rnorm(N)
op <- par(mar=c(0,0,0,0), oma=c(0,0,0,0)+.1)
layout(matrix(c(1,1,1,2), nc=1))
y <- ppoints( length(x) )
plot(sort(x), y, type="l", lwd=3,
     xlab="", ylab="", main="")
abline(h=c(0,.25,.5,.75,1), lty=3)
abline(v = quantile(x), col = "blue", lwd = 3, lty=2)
points(quantile(x), c(0,.25,.5,.75,1), lwd=10, col="blue")
boxplot(x, horizontal = TRUE, col = "pink", lwd=5) 
abline(v = quantile(x), col = "blue", lwd = 3, lty=2)
par(new=T)
boxplot(x, horizontal = TRUE, col = "pink", lwd=5) 
par(op)


C'est issu de ce site

et voilà ce que ça donne :

Image

ce n'est pas un histogramme mais c'est vraiment pas loin :). Un conseil, si jamais tu as des problèmes avec les paramètres de la fonction hist() notamment pour l'axe des abscisses, regardes du côté de la fonction barplot qui t'offrira un plus large panel de possibilités (tu peux récupérer les classes faites par hist() pour faire ton barplot, regardes dans le site, il me semble que Maxime Logez avait donné un exemple pour ça dans un de ses posts)

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Messagepar Aurélien Madouasse » 10 Mai 2007, 18:46

Merci, je vais regarder ça.

Logez Maxime
Messages : 2897
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 10 Mai 2007, 18:55

Bonjour,


Une autre façon de faire serait de ne pas séparer la fenêtre en deux mais de mettre les deux graphiques sur la même avec le paramètre add de la fonction boxplot :

Code : Tout sélectionner

x <- rnorm(1000)
jpeg(file="essai1.jpg",width=1000,height=1000)

# pour diminuer la marge du haut
par(mar=c(5.1,4.1,0.1,2.1))

# j'augmente volontairement le ylim de l'histogramme pour pouvoir mettre le boxplot en haut de la fenêtre
hist(x,ylim=c(0,250),axes=F,main=NULL)

# je fais afficher l'axe des abcisses
axis(1)

# je fais afficher l'axe des ordonnées uniquement sur les valeurs possibles pour l'histogramme
axis(2,at=seq(0,200,by=50))

# le boxplot avec le positionnement pour une ordonnée de 225 et boxwex =30 pour avoir une taille correcte de boîte
boxplot(x,horizontal =T,frame.plot=F,add=T,at=225,boxwex=30)
dev.off()

L'histogramme et le boxplot

Maxime

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Messagepar Aurélien Madouasse » 11 Mai 2007, 08:59

Merci beaucoup, j'ai enfin réussi à faire ce que je voulais.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité