Echelles logarithmiques

Excel permet d'utiliser des échelles logarithmiques sur un graphique mais il faut quelques astuces pour que la représentation finale soit conforme aux attentes.

Une échelle logarithmique est très utile dès lors que l'on veut représenter un ensemble de données comportant des valeurs très faibles (mais positives) et d'autres très élevées.
C'est également une représentation indispensable pour mettre en évidence des phénomènes physiques ou biologiques.
 

Histogrammes

Voici  par exemple les concentrations d'un médicament mesurées dans différents organes :
Pour chaque organe on a fait 5 mesures ce qui nous permet de calculer la moyenne et l'écartype. Ici, comme on estime la valeur sur une population à partir de mesures effectuées dans un échatillon de 5 individus, on prendra l'écartypep. On veut représenter sur un histogramme les moyennes et utiliser l'écartypep comme valeur pour des barres d'erreur personnalisées.

  moyenne ecartypep
Cœur 0.123 0.114
Rein 0.673 0.035
Foie 50.481 30.762
rate 3.782 3.124

On voit tout de suite qu'une représentation en histogramme classique ne convient pas, les valeurs dans le coeur et dans le rein étant écrasées par celle mesurée dans le foie.

Transformons l'échelle de l'axe des ordonnées (Y)

  

Cette fois, on peut visualiser toutes les données et leur variabilité au sein de l'échantillon (écartypep).
Attention, la table des données n'a subi aucune modification, ce n'est que l'axe des Y, et donc la représentation des données, qui a changé. Une erreur fréquemment faite est d'écrire comme légende de l'axe des ordonnées log(valeur). C'est une erreur.
Notez que les hauteurs des barres d'erreur (ecartypep) sont aussi automatiquement ajustées. 

Si la concentration mesurée dans les poumons était nulle (c'est à dire en pratique en dessous de la limite de détection de l'appareil utilisé pour la mesure), on aurait droit à une "injurebox" d'excel. En effet, on ne peut mathématiquement pas calculer le logarithme de 0. Dans ce cas vous pouvez ruser et mettre une valeur de 0,1 pour les poumons (en fait la valeur la plus petite de l'axe des Y).

Le graphique ci-dessus ne nécessite pas d'autre modification pour être conforme aux habitudes scientifiques de représentation, l'échelle allant de 0.1 à 100 étant bien adaptée aux données. Mais que faire si la concentration dans le foie est de 80 ? Du fait de la barre d'erreur, Excel choisit alors par défaut une échelle allant de 0.1 à 1000 alors qu'une échelle allant de 0.1 à 200 serait bien plus adaptée.

Avec excel 2003 et antérieur, on ne peut tout simplement pas mettre 200 comme valeur max de l'axe des ordonnées. Excel veut obstinément mettre des puissances de 10. Ceci a été corrigé avec excel 2007 et +, ce qui est une des très rares améliorations des graphiques dans 2007. Cela dit ce qu'on obtient n'est pas complètement satisfaisant car excel affiche toujours les valeurs comme des multiples de la valeur minimale de l'axe (ici 0.1). Si on met la valeur minimale à 0.2 on voit bien la valeur 200 affichée mais du coup, on ne voit plus de barre pour le coeur !

  

Autre problème : on peut certes afficher les graduations mineures (ce que je conseille pour attirer l'attention du lecteur sur le fait que c'est une échelle logarithmique), mais on ne peut pas indiquer de valeurs intermédiaires.
Comment obtenir ceci :

La résolution de ces problèmes est différente suivant la version d'excel dont on dispose.

Avec excel 2007 et versions ultérieures

Commençons par créer le tableau suivant:

  echelle
0 200
0 100
0 40
0 20
0 10
0 4
0 2
0 1
0 0.4
0 0.2
0 0.1

Copiez cette série (ctrl+C) puis cliquez sur le graphique pour qu'il soit sélectionné. Dans onglet accueil/Collage/collage spécial, sélectionnez les options suivantes :

Vous obtenez ceci :


Faites un clic droit sur la nouvelle série, "modifier le type de graphique" et choisir l'option graphique en nuage de point xy (sans traits pour relier les points) ce qui vous donne ceci :

Il faut maintenant :

  • formater l'axe des Y secondaire (celui de droite) : mettez le maximum à 200, le minimum à 0.1, cachez l'axe (couleur du trait = aucun trait), les étiquettes et graduations de l'axe. 
  • Faites de même pour l'axe secondaire des X en haut
  • Affichez les étiquettes de valeur de la nouvelle série : clic droit sur la série, ajouter des étiquettes de données. Par défaut excel les positionne à droite des valeurs or nous les voulons à gauche. Désélectionnez la série puis reséléctionnez la. Clic droit, cette fois vous avez dans le menu "modifier les étiquettes de données". Vous pouvez aussi sélectionner les étiquettes et accéder à ce menu via l'onglet graphique/disposition/ à gauche, dans le menu déroulant sélection : série échelle étiquettes de données. Positionnez vos étiquettes à gauche.
  • Sélectionnez votre nouvelle série, masquez les marques.
  • Sélectionnez l'axe des Y principal et masquez les étiquettes.

Avec excel 2003 et versions antérieures

Dans ces versions, les valeurs de l'axe des Y en échelle logarithmiques sont obligatoirement des multiples de 10. Dans l'exemple ci-dessus, soit on choisit une échelle allant de 1 à 100 et on tronque la barre d'erreur de la donnée foie, soit on a une échelle allant de 1 à 1000. C'est évidemment encore plus gênant si on veut représenter sur une échelle log des valeurs qui s'échelonneraient de 8 à 12 : excel impose dans ce cas un axe allant de 1 à 100 !
Il n'y a pas d'autre solution dans ce cas que de passer par un tableau intermédiaire de valeurs contenant les logs de nos valeurs initiales.
Laissons de côté pour le moment les barres d'erreur qui posent un problème particulier.

  log(moyenne)
Cœur -0.911
Rein -0.172
Foie 1.903
rate 0.578

On fait alors une représentation en histogramme. 
On veut (c'est notre postulat de départ) représenter nos données sur une échelle allant de 0.1 à 200, autrement dit de -1 (log(0.1)) à +2.301 (log(200))
Avec un peu de nettoyage on arrive à ceci :

On peut bien entendu laisser les données comme ceci en écrivant cette fois comme légende de l'axe des ordonnées log(Concentration). Mais c'est assez dur pour le lecteur de faire la conversion de tête entre le log et la valeur. On va donc simuler une échelle logarithmique sur les étiquettes à l'aide d'une série fictive.

La méthode est identique à celle décrite pour excel 2007 :

  • créez une série fictive : dans la première colonne (abscisses) toutes les valeurs sont à 0. La deuxième colonne contient les valeurs qu'on veut voir affichées sur le graphique (200, 100, 40, 20...). La troisième colonne contient le logarithme (base 10) de la valeur à sa gauche. 
  • Sélectionnées les abscisses (première colonne) et le log des ordonnées (troisième colonne)
  • Sélectionnez le graphique
  • Collage spécial, collez les données comme nouvelle série avec les valeurs en colonne, les absicsses dans la première colonne.
  • Sélectionnez la série fictive, clic droit, modifier le type de graphique, choisir nuage de points
  • Formatez l'axe secondaire des Y qui est créé de façon à mettre le minimum à 0.1, le maximum à 2.302 (> 2.301 si l'on veut que l'étiquette 200 apparaisse bien par la suite). Effacez le trait de l'axe, les marques de graduations primaires et secondaires, les étiquettes.
  • De même effacez l'axe secondaire des X en haut du graphique (trait, graduations etiquettes)
  • Effacez les graduations et les étiquettes de l'axe des Y principal
  • Mettez en forme la série fictive : utilisez un trat horizontal comme marque du point.

Une différence importante maintenant : vous ne pouvez pas utiliser les données de la série fictive comme étiquette pour le graphique. Vous voulez à la place indiquer les valeurs contenues dans la deuxième colonne.  Cela fait des années que l'on demande à microsoft de prévoir d'afficher une légende qui ne soit pas la valeur des points mais en vain, cette fonctionnalité n'est toujours pas intégrée à excel. Fort heureusement un add-in faisant cela a été développé par Laurent Longre. Il est en téléchargement gratuit sur son site  Malheureusement, il ne fonctionne pas avec excel 2007 et versions ultérieures. Je vous recommande donc plutôt celui développé par Rob Bovey, également gratuit et compatible avec toutes les versions, 2010 y compris. Dans les deux cas il y a une procédure d'installation très simple et cet outil très léger vous servira dans bien d'autres circonstances. Une fois l'add-in installé, sélectionnez la série fictive,  et ajoutez lui une légende en choisissant la colonne des ordonnées dans votre table. Positionnez la légende à gauche.

Le problème particulier des barres d'erreurs avec les versions antérieures à 2007.

Vous ne pouvez pas simplement utiliser le log de vos écartypes pour vos barres d'erreur, ceci vous donnerait des résultats faux. Pour vous en convaincre prenons la valeur mesurée dans le coeur : 0.123 +/- 0.114. La valeur supérieure de vottre barre d'erreur est donc 0.123+0.114= 0.237. Le log de cette valeur est -0.625
Si j'additionnais le log de la moyenne au log de l'écartype, le haut de ma barre d'erreur se trouverait à -1.85 ce qui est fort différent (et faux !).
Il faut donc procéder différemment : dans le tableau de données de départ, ajoutez une colonne égale à la somme de la moyenne et de l'écartypep

  moyenne ecartypep bornesup
Cœur 0.123 0.114 0.236
Rein 0.673 0.035 0.708
Foie 80.000 30.762 110.762
rate 3.782 3.124 6.906

puis utilisez comme source pour vos barres d'erreur la différence entre le log de la moyenne et le log de la borne supérieure

  log(moyenne) log(bornesup) barre
Cœur -0.911 -0.626 0.285
Rein -0.172 -0.150 0.022
Foie 1.903 2.044 0.141
rate 0.578 0.839 0.261

Toujours à propos des barres d'erreur (toutes versions d'excel) : le problème des valeurs négatives dues aux barres d'erreur.

Dans les exemples ci-dessus, je n'ai représenté que la barre d'erreur vers le haut. Mais on peut (ou doit d'ailleurs) représenter les barres d'erreur vers le bas (moyenne - l'écartypep). Ceci pose un problème, qui n'est pas lié à excel, quand on veut une représentation avec une échelle logarithmique. En effet dans nombre de cas, moyenne-ecartypep vous donne un nombre négatif. Et on ne peut pas prendre le log d'un nombre négatif. Il n'y a PAS de solution, par excel ou autre à ce problème.

Echelles logarithmiques sur des graphiques en nuage de points

On peut bien sur utiliser des échelles logarithmiques sur d'autres types de graphiques que les histogrammes. C'est particulièrement utile pour les graphiques en nuage de point, en particulier car cela permet de facilement vérifier si une relation suit une équation exponentielle ou logarithmique. Reprenons l'exemple de la concentration d'un médicament dans différents organes. On peut suivre son élimination au cours du temps. Voici les concentrations mesurées :

  Cœur Rein Foie rate
2 0.123 0.673 50.481 2.500
5 0.100 0.554 71.670 4.587
10 0.083 0.487 116.578 2.350
20 0.040 0.374 47.877 0.938
40 0.012 0.240 5.685 0.171
80   0.100 0.045 0.010

Une représentation classique nous donnerait le graphique ci-dessous, inexploitable :

Avec une échelle logarithmique, et les astuces décrites plus haut, on peut construire le graphique suivant, ce qui permet de voir facilement que le pic de concentration  et le temps d'élimination du médicament varie suivant le tissu.

On peut du reste à partir de l'équation de la courbe de régression (de type exponentielle) calculer ce temps de demie vie.
Une remarque au passage, ce n'est pas parce que l'échelle des ordonnées est logarithmique que la courbe de tendance est logaritmique...
La nature (linéaire, logarithmique, exponentielle...) dépend d'une seule chose : la relation mathématique, s'il en existe une, ce qui est loin d'être toujours le cas, qui relie éventuellement vos données entre elles. Rappellons que pour construire le graphique ci-dessus, nous n'avons PAS modifié les données initiales. Autrement dit, nous n'avons pas construit de tableau secondaire en calculant les logs de nos valeurs. Par conséquent, si les données sont reliées entre elles par une relation linéaire, la courbe de tendance sera toujours de type linéaire, que l'échelle des Y soit "normale" ou logarithmique.

Quand on absorbe un médicament, il s'élimine classiquement des tissus suivant une relation exponentielle : sa concentration diminue de moitié toutes les X minutes, X représentant ce qu'on appelle la demie-vie. On la calcule par la relation demie-vie= log(2)/pente.
Par exemple dans le rein, la demi-vie est de log(2/-0.024)=-28.88 minutes. Le signe - indique qu'il s'agit d'une élimination (la dose diminue).

Représentation logarithmique de l'axe des X

On peut évidemment utiliser une représentation logarithmique sur l'axe des X exactement de la même façon que pour l'axe des Y.
Il faut pour cela choisir impérativement un graphique en nuage de points et non pas en courbe. Rappellons que sur un graphique en nuage de point, sur l'axe des X, les étiquettes sont placées proportionnellement à leur valeur au lieu d'être équidistantes comme dans un graphique "en courbe" (dénomination malencontreuse propre à microsoft).

Restons dans le domaine des sciences expérimentales (ca change des exemples de ventes par secteur non ?). On veut représenter le tableau de valeur suivant :

Concentration D0
1.00E-03 3.20
1.00E-04 3.10
1.00E-05 3.00
1.00E-06 2.80
1.00E-07 2.50
1.00E-08 1.80
1.00E-09 1.30
1.00E-10 0.65
1.00E-11 0.33
1.00E-12 0.16

Une représentation normale donne ceci

En utilisant une échelle logarithmique pour l'axe des x, on obtient ceci :

Excel utilise une façon bien à lui de noter les puissances de 10 : 1E-12 au lieu 10-12
Si vous devez transmettre votre graphique en respectant la notation normale, il faut une fois de plus ruser.
Créez une série fictive :

1.00E-03 0.00 10-3
1.00E-04 0.00 10-4
1.00E-05 0.00 10-5
1.00E-06 0.00 10-6
1.00E-07 0.00 10-7
1.00E-08 0.00 10-8
1.00E-09 0.00 10-9
1.00E-10 0.00 10-10
1.00E-11 0.00 10-11
1.00E-12 0.00 10-12

Mettez la troisième colonne au format texte. 
Copiez les deux premières colonnes, sélectionnez votre graphique, collage spécial/nouvelle série/valeurs des X dans la première colonne, données en colonne.
Ensuite utilisez l'add-in de Bill Manville déjà indiqué plus haut pour utiliser la troisième colonne comme source des étiquettes. Supprimez les marques de données pour cette série.
Effacez les étiquettes de l'axe des X. Vous obtenez ceci :

Ce n'est pas encore parfait : il faut pour bien faire mettre en exposant le signe négatif et la puissance. Malheureusement, même en formatant la colonne seravnt de source d'étiquettes, le format ne se répercute pas sur le graphique. Deux solutions : soit reprendre une à une chacune des étiquettes, sélectionner le signe et la puissance puis via le menu format de cellule, mettre en exposant. Un petit truc : il est parfois difficile de ne sélectionner que la partie à mettre en exposant dans une étiquette. Placez le curseur à droite du texte, et tout en maintenant la touche majuscule enfoncée, cliquez à gauche du signe -. Formatez, et répétez pour chaque étiquette (ctrl+Y répète la dernière opération ce qui évite de devoir ouvrir le menu formatage à chaque fois).

Si vous devez faire ce genre d'opération très souvent, vous pouvez aussi placer les étiquettes et les formater en utilisant une macro comme celle proposée par Jon Peltier sur son site.

Graphiques log-log

On peut bien entendu utiliser une échelle logarithmique à la fois pour l'échelle des Y et pour celle des X.

Là encore on peut utiliser des séries fictives pour mettre des étiquettes qui soient plus faciles à lire.
Mais attention ! l'abscisse utilisée pour la série fictive des étiquettes d'ordonnées doit être celle de la valeur minimale de l'axe des abscisses soit 10E4
et réciproquement, l'ordonnée de la série fictive utilisée pour les légendes de l'axe des abscisses doit être 1E-11.

Si vous avez des questions, des corrections ou commentaires portant sur CE TUTORIEL seulement, utilisez les commentaires (pour les lecteurs enregistrés seulement). Si vous avez des questions plus générales sur les graphiques ou sur excel, posez les sur le forum excel de microsoft qui n'est PAS hébergé sur ce site...

Mots clefs associés à cette page : ,

une petite coquille ?

Bonjour, je pense que la phrase
"Excel veut obstinément mettre des multiples de 10."
serait plus appropriée en
"Excel veut obstinément mettre des puissances de 10."

Au plaisir

#FFFFFF

exact

je corrige !
merci

Misange

Nouveau

1 Nouvelle page ajoutée ce mois-ci dont :

Mises à jour

3 pages modifiées ce mois-ci dont :