[Divers] génération de statistique sur divers intervals

génération de statistique sur divers intervals [Divers] - Divers - Programmation

Marsh Posté le 29-07-2004 à 21:39:16    

Je cherche la meilleure facon de générer des graphiques de statistiques sur des intervals au choix de l'utilisateur.
 
Il faut déterminer l'interval entre chaque point, le nombre de point, et à quel intervalle indiquer une valeur sur l'axe des x pour que le tout puisse être lisible.
 
Le faire pour 24hrs, 1 semaine, 1 mois c'est pas trop compliqué, mais là j'entre carrément dans un algorithme à m'y perdre.
 
Si quelqu'un a une piste :)

Reply

Marsh Posté le 29-07-2004 à 21:39:16   

Reply

Marsh Posté le 29-07-2004 à 23:20:49    

je vois pas trop le problème.  
 
pour que le graphe soit lisible. il faudrait que la plus grande valeur atteigne 80% ou 90% du graphe.  
 
je vois pas trop le soucis en fait


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 29-07-2004 à 23:29:39    

bin par exemple, si l'utilisateur veut les stats entre le 2004-07-27 00:00 et le 2004-07-28 13:15
 
ca me fait 2235 minutes sur mon axe des X
 
donc en voulant avoir moins de 100 points, ca me fait environ 30min d'écart entre chacun des points, soit 75 points
 
mais le 30min d'écart, je l'ai évaluer par instinct. jaurais pas voulu un truc comme 27 minutes, qui veut pas dire grand chose.
 
Les écarts dans 1 hrs, dans 1 journée, dans 1 semaine, dans 1 mois, dans 1 année
 
jveux pas avoir d'interval de 1.5 jour, de 7 hrs, etc...
 
donc je vois ca comme un truc pas nécessairement monstrueux, mais j'ai du mal à évaluer

Reply

Marsh Posté le 29-07-2004 à 23:30:07    

Soit un tableau de stuctures :
tab[0].interval = "24hrs";
tab[0].unit = "hour";
tab[0].count = 24;
tab[1].interval = "week";
tab[1].unit = "day";
tab[1].count = 7;
...
 
Ensuite, tu cherche le "unit" et le "count" qui correspond à l'interval choisi.
 
Puis tu fais une fonction "drawGraph(unit, count)", avec cette structure :
 
int[count] tabVals;
 
for (int i = 0; i plus_petit_que count; i++) // desole, mon clavier deconne :)
    tabVals[i] = getSommeVals(unit, count - i);
 
puis tu récupère la plus grande valeur de tabVals[] et t'as plus qu'à afficher.
 
La fonction "getSommeVals(unit, timestamp)" récupère la somme des valeurs pour une durée correspondant à une "unit" "timestamp" unit dans le passé.
 
Cet algo n'est pas très compliqué en soit, et il devrait fonctionner correctement.

Reply

Marsh Posté le 29-07-2004 à 23:37:12    

récupéré les données c'est pas vraiment mon problème, c'est de déterminé l'interval entre les points, l'interval pour les points de légendes sur l'axe des X qui me complique un peu, histoire que ca soit tjrs logique (pas de 7min d'écart par exemple, utiliser 5 ou 10, pas de 5hrs d'écart, utiliser plutot 4 ou 6, de manière à ce que sur le graphique, on voit facilement qu'entre le point x1 et x2, c'est telle heure ou telle journée

Reply

Marsh Posté le 29-07-2004 à 23:40:06    

Bah reprends mon idée du tableau de structure afin de déterminer en fonction de l'interval spécifié, quelle unité appliquer, et ajoute une notion de plages de sous-intervals possibles.

Reply

Marsh Posté le 30-07-2004 à 01:14:54    

Comme dit Arjuna, tu n'as qu'à prendre le premier multiple du type d'unité que tu veux afficher (minutes, heures, jours), unité que tu choisiras en fonction de la plage de tes mesures.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed