Graphes à deux axes avec ggplot2

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

Benoît Llamas
Messages : 4
Enregistré le : 22 Juin 2016, 21:41

Graphes à deux axes avec ggplot2

Messagepar Benoît Llamas » 23 Juin 2016, 07:41

Bonjour,

Dans un de mes codes, j'essaie de transformer mais plot normaux en ggplot pour pouvoir ensuite faire des graphes interactifs. Seulement pour l'un d'eux je rencontre un problème. J'ai deux série de données avec la même abscisse mais avec des ordonnées totalement différentes (3 ou 4 ordres de grandeur de différence).
J'aimerai les mettre sur le même graphe (ggplot) avec une échelle à gauche et une échelle à droite mais je n'y arrive pas. Les deux séries prennent la même échelle et l'une des deux se retrouve totalement écrasée. J'ai essayé d'utiliser la fonction inherits.aes mais je ne vois aucun effet....

Si ça peut vous aider pour comprendre ce que je veux, le code pour des plot "normaux" pour ce que je veux faire est le suivant:
graphes_caracteristiques_statistiques<-function(frequence_hauteur){

plot(frequence_hauteur$Hauteur,frequence_hauteur$Frequence_apparition,type="n",main="", xlab="",ylab="", ylim=c(0,max(frequence_hauteur$Frequence_apparition)))
points(frequence_hauteur$Hauteur,frequence_hauteur$Frequence_apparition,type="b",col="blue",pch=4,lwd=2)
par(new=TRUE)
plot(frequence_hauteur$Hauteur,frequence_hauteur$hauteur_cumulee,type="b",main="",xlab="",ylab="",axes=FALSE,col="red",pch=4,lwd=2)
axis(4)
title(main="Répartition des hauteurs dans l'échantillon",xlab = "Hauteur (m)", ylab="Nombre")
mtext("Hauteurs cumulées", side=4, line=2,outer=TRUE,col="black")
legend(x="right",legend=c("Hauteurs cumulées", "Fréquence des hauteurs"),col=c("red","blue"),pch=4:4)
par(new=FALSE)
}

fréquence_hauteur est un data frame composé des colonnes Hauteur, Frequence_apparition et hauteur_cumulee. Je cherche à tracer les deux dernières en fonction de la première.

Merci d'avance

Alexandre Dangléant
Messages : 270
Enregistré le : 30 Mar 2010, 14:38

Re: Graphes à deux axes avec ggplot2

Messagepar Alexandre Dangléant » 23 Juin 2016, 08:54

Bonjour,

Ce n'est tout simplement pas possible avec ggplot (du moins, rien n'est prévu pour le faire), et c'est délibéré. En cherchant un peu mieux, vous trouverez sans problèmes des posts qui traitent de ce sujet, sur ce forum ou un autre.

Sans entrer dans les grandes théories de la visualisation de données, ce type de graphique est mal perçu par les spécialistes car ils peuvent facilement créer une illusion de relation (qq recherches vous en apprendrons plus sur le pourquoi du comment). Bref, les développeurs de ggplot s'inscrivent dans cette opinion, d'où l'absence de cette possibilité.

La manière la plus propre de présenter ces données est d'utiliser la fonctions "facet_grid" de ggplot, qui permet de juxtaposer des graphs en leur faisant partager un axe (l'abscisse dans votre cas). Si la réalisation vous pose problème, faites le savoir ici et nous vous aiderons.

Si vous tenez vraiment à votre première idée, vous pourrez peut être le faire directement avec plotly, plutôt que de passer par une conversion ggplot -> plotly. Mais j'avoue ne pas m'être intéressé à cela car je suis plutôt d'accord sur le principe de ne pas faire des graphs à double ordonnées...

Cordialement.

P.S : Merci d'utiliser les balises "code" pour présenter des commandes R sur ce forum, c'est plus lisible.

Dujaric Marie-E
Messages : 38
Enregistré le : 18 Fév 2016, 09:27

Re: Graphes à deux axes avec ggplot2

Messagepar Dujaric Marie-E » 23 Juin 2016, 10:06

Bonjour,

Cet exemple trouvé sur internet est très intéressant et peut aider à solutionner le problème :
https://gist.github.com/tomhopper/faa24797bb44addeba79

Bon courage

Benoît Llamas
Messages : 4
Enregistré le : 22 Juin 2016, 21:41

Re: Graphes à deux axes avec ggplot2

Messagepar Benoît Llamas » 06 Juil 2016, 08:14

Bonjour,

Merci de vos réponses rapides. Je suis désolé de mon délai de réponse très long..
Grâce à vos conseils me disant d'utiliser directement plotly, je suis parvenu à faire que je voulais.

Merci beaucoup !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Pierre-Yves Berrard et 1 invité