Gestion des axes
Cette rubrique présente les diverses approches possibles pour organiser les graduations des axes.
La mise en place des graduations des axes n'est pas nécessairement une affaire simple. Bien sur, lorsqu'un axe a des limites "simples", comme à titre d'exemple, un axe gradué de 0 à 100, le problème ne se pose pas. A contrario lorsque les limites ne sont pas des multiples, ou sont des valeurs réelles, la graduation des axes peut devenir réellement délicate. En effet, une bonne graduation implique que l'axe est "facile à lire et à appréhender". Dans cette rubrique nous utilisons un exemple pour un axe variant de -3 à +34. Comment organiseriez vous un tel axe ? Quel intervalle entre les graduations ? Combien de graduations ? Pas si simple.
Les propriétés de réglage des axes
La librairie TXSLib met à votre disposition 4 approches pour "régler" les axes et leurs graduations. Ces 4 approches sont mises en oeuvre par 3 propriétés :
- ScaleSpecification (AxisTicksSpecification pour les objets de tracé de coubes hérités de la classe TGraph)
- ScaleNumberOfTicks (AxisNumberOfTicks pour les objets de tracé de coubes hérités de la classe TGraph)
- ScaleTicksInterval (AxisTicksInterval pour les objets de tracé de coubes hérités de la classe TGraph)
La propriété "ScaleSpecification" définie, à la fois, la façon dont les graduations sont calculées, et par conséquence, l'utilisation des propriétés "ScaleNumberOfTicks" et "ScaleTicksInterval". Le tableau suivant résume comment se comportent ces deux dernières propriétés selon la valeur attribuée à la propriété "ScaleSpecification" :
| Valeur de ScaleSpecification | ScaleNumberOfTicks | ScaleTicksInterval |
| TXS::TicksSpecification_Adjusted | Calculée automatiquement | Calculée automatiquement |
| TXS::TicksSpecification_Automatic | Calculée automatiquement | Calculée automatiquement |
| TXS::TicksSpecification_NTicks | Définie par l'utilisateur | Calculée automatiquement |
| TXS::TicksSpecification_Interval | Calculée automatiquement | Définie par l'utilisateur |
Réglages manuels
On dispose donc de 2 approches manuelles : "TXS::TicksSpecification_NTicks" ou l'utilisateur définie la valeur de la propriété "ScaleNumberOfTicks", et "TXS::TicksSpecification_Interval" ou l'utilisateur définie la valeur de la propriété "ScaleTicksInterval". Dans le premier cas les valeurs des limites de l'axe sont respectées. Dans le deuxième cas, la valeur maximale peut être augmentée au cas ou l'intervalle spécifié entrainerait un nombre de graduations non entier.... Il ne peut pas y avoir 5,6 graduations..... C'est obligatoirement 6 !!!
Cette dernière remarque est importante. Il est bon de comprendre que ce n'est pas parce que des données vont de X à Y qu'il faut impérativement que l'axe sur lequel on les représente soit gradué de X à Y. Tout ce qui est important c'est que ces valeurs X et Y soient bien comprises dans l'axe et qu'elles soient les plus distantes possibles.
Réglages automatiques
On dispose également de deux approches de réglage automatique des axes : "TXS::TicksSpecification_Adjusted" et "TXS::TicksSpecification_Automatic" pour lesquelles les propriétés "ScaleNumberOfTicks" et "TXS::TicksSpecification_Interval" sont calculées automatiquement. Mais ces deux approches automatiques fonctionnent sur des algorithmes différents.
TicksSpecification_Adjusted
L'algorithme tente de trouver une échelle ou les graduations sont entières et ou des multiples entiers d'une valeur réelle. Il ne modifie jamais la valeur minimale de laxe, mais il peut modifier la valeur maximale de ce dernier. Dans ce cas les graduations peuvent avoir un intervalle multiple de n'importe quel chiffre. Il peut conduire à un nombre de graduations pouvant être important.
TicksSpecification_Automatic
L'algorithme utilisé est dit "1,2,5". L'humain a une tête, deux mains et cinq doigts à chaque main. C'est la raison physiologique pour laquelle des echelles graduées selon des multiples de ces 3 chiffres sont les plus faciles à lire et à appréhender. En utilisant le valeur "TXS::TicksSpecification_Adjusted" pour la propriété "ScaleSpecification", l'échelle sera toujours graduée par des intervalles qui seront des multiples de 1, 2, ou 5. Il est possible que les valeurs minimales et maximales de l'axe soient diminuée pour l'une et augmentée pour l'autre afin de respecter cette echelle multiple de 1, 2 ou 5.
Comparaison
L'image suivante représente 4 axes dont les valeurs minimales et maximales ont été définies à -3 et +34. Chaque axe utilise une spécification différente :
