Graphique : Algorithme pour les graduations sur les axes

cs_Icewall Messages postés 9 Date d'inscription mercredi 9 juillet 2008 Statut Membre Dernière intervention 14 juillet 2010 - 14 févr. 2009 à 05:46
mioumiounorris Messages postés 57 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 septembre 2011 - 7 août 2009 à 17:45
Bonjour à tous !!!

Je suis entrain de réfléchir à un moyen de créer des graphiques.

Je suis parti d'un exemple simple : la répartition des ventes d'un produit par mois. 
En x : Janvier, Février, Mars,...
En y : 70, 100, 150, ...

Premier problème, les graduations : je ne peux pas toujours mettre 0 comme valeur initiale pour l'axe y. Car pour certains graphiques le 0 n'est pas significatif.
Une solution serait d'utiliser les fonctions donnant le minimum et le maximum dans une liste de données comme valeur initiale et finale pour l'axe.
C'est déjà un peu mieux, mais le graphique n'est pas très agréable à regarder. Il faut un espace minimum en dessous de la valeur minimale et au dessus de la valeur maximale.

Je commence à imaginer mon algorithme :
Il y a entre 6 et 10 graduations.
Les graduations s'espacent de 1, 2, 5, 10 puis 20 (je peux encore continuer)
Si la valeur maximale dans mes données est comprise entre [153 et 171] par exemple, la valeur maximale de ma graduation est 180.
J'ai 9 intervalles (180 160 140 120 100 80 60 40 20 0) donc 10 graduations.


<colgroup>
<col style=\"WIDTH: 60pt\" span=\"4\" width=\"80\" />
</colgroup>

----

,
,
                   ,
               >=,

----

Intervalles,
              Pas,
Max Graphe,
Max Valeur,

----

10,
20,
200,
172,

----

9,
20,
180,
153,

----

8,
20,
160,
134,

----

7,
20,
140,
115,

----

6,
20,
120,
96,

----

10,
10,
100,
86,

----

9,
10,
90,
77,

----

8,
10,
80,
67,

----

7,
10,
70,
58,

----

6,
10,
60,
48,

----

10,
5,
50,
43,

----

9,
5,
45,
39,

----

8,
5,
40,
34,

----

7,
5,
35,
29,

----

6,
5,
30,
24,

----

5,
5,
25,
20,

----

10,
2,
20,
18,

----

9,
2,
18,
16,

----

8,
2,
16,
14,

----

7,
2,
14,
12,

----

6,
2,
12,
10,

----

10,
1,
10,
9,

----

9,
1,
9,
8,

----

8,
1,
8,
7,

----

7,
1,
7,
6,

----

6,
1,
6,
5




Ca commence à prendre forme, mais je fais face à un autre problème. Si les valeurs dans ma base de données sont proches du style 150 152 148. Même en connaissant la valeur maximale : 152 dans ce cas ci, le graphique ne ressemble toujours à rien 
Je dois aussi prendre en considération la valeur minimale…


Ce n'est qu'un début évidemment et j'attends vos remarques avec la plus grande attention.

PS : Quand l'algorithme sera correct, je le ferai en vb.net

1 réponse

mioumiounorris Messages postés 57 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 septembre 2011
7 août 2009 à 17:45
Salut.
Désolé de faire remonter le sujet, mais as-tu trouvé une solution à ton problème ?
Je suis à peu près dans ce cas de figure aussi en ce moment. Je dois dessiner une règle graduée au dessus d'une image sur laquelle on peut zoomer. Et la règle doit se redessiner à la bonne échelle à chaque changement de zoom. Je me retrouve avec des problèmes d'arrondi et de graduations avec un pixel (voir plus) décalé avant ou après la valeur à laquelle il devrait être.
Tapez le texte de l'url ici.

Si tu as trouvé un truc, je suis preneur
0
Rejoignez-nous