CLASS TRACER DE GRAPHIQUE EN 2D ET 3D (HISTOGRAMME ET COURBES)

williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007 - 9 mars 2006 à 12:14
jcbiagui Messages postés 1 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 18 juillet 2007 - 18 juil. 2007 à 19:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36453-class-tracer-de-graphique-en-2d-et-3d-histogramme-et-courbes

jcbiagui Messages postés 1 Date d'inscription mardi 5 décembre 2006 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 19:59
Salut, Vraiment un trés grand merci mais dite g voulu affiché la courbe mais rien... Comment afficher la courbe STP c urgent Merci d'avance
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
21 juin 2007 à 13:55
voila la class graphique camembert est en ligne a cette adresse : http://www.phpcs.com/code.aspx?ID=43204

j'y attend vos impressions.
DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 1
21 juin 2007 à 11:32
un graphe camembert j'en ai déjà trouvé un super ici meme en 3d, mais si le tien est aussi bien que ce script, alors je dis pas non ;)
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
21 juin 2007 à 11:29
non ce n'est pas encore possible de coloré chaque battons. mais c'est une idée que je met de coté donc merci pour l'idée. :))
Par contre suite a de nombreux commentaires je tiens a rappeler que les courbes ne fonctionnent pas.
Je réglerais le problème dès que j'en aurais le temps.

J'ai également travaillé sur une class de graphique en camembert qui tourne pas mal avec gestion de couleur, taille, légende, profondeur, 3D, espacement, annotation des valeurs pour chaques parts etc...
Est ça intéresse quelqu'un je la mette en ligne ?

A bientôt.
DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 1
21 juin 2007 à 10:19
Super script, y a rien à redire.

Par contre, pour une prochaine version peut-être, je me disais que sa serait sympa de pouvoir mettre des couleurs différentes pour chaque bâton, à moins que se soit déjà possible avec ton script ?
diallosa Messages postés 1 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 3 mai 2007
3 mai 2007 à 16:16
excellent script , il m'a beaucoup aidé sur mon projet
Merci!!!!
hades182 Messages postés 2 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 16 avril 2007
16 avril 2007 à 22:36
j'ai esseyé de copier le code que tu nous a fournis en haut, j'ai changé le path pour les images, pour la police, mais je n'arrive pas a faire fonctionner ta classe ... je suis un peu débutant en php, est-ce que quelqun pourrait m'aider en me donnant un exemple de fichier test.

si ça peut aider quelqun voici mes 2 erreurs:

Notice: Undefined offset: 2 in C:\apache\htdocs\stats\graph.class.php on line 314

Warning: Division by zero in C:\apache\htdocs\stats\graph.class.php on line 315
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
24 mars 2007 à 15:11
j ai genere un code pour la creation de l image mais je ne parvient pas a detruire l image :(


//chiffre rnd pour l'image generer ///////////////////////////////////////////////////////////////////

for($j=1;$j<=5;$j++) {
srand((float) microtime()*1000000);
        for($i=1;$i<=10;$i++) {
                // Génération d'un nombre compris entre 1 et 6
                $resultat = rand(1, 60000) ;
        }   
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
imagepng($this->img, $this->imgUrl.$this->nomImg.$resultat.'.png');
imagedestroy($this->$nomImg.$resultat.'.png');//->img);

if ($display==true){
echo 'imgUrl.$this->nomImg.$resultat.'.png?'.time().'" border="0" usemap="#'.$this->nomImg.$resultat.'">
<map name="'.$this->nomImg.$resultat.'">'
.$this->bufferMAP.
'</map>';
}
else{
return $this->imgUrl.$this->nomImg.$resultat.'.png?'.time();
}

}
gfpl Messages postés 172 Date d'inscription samedi 11 août 2012 Statut Membre Dernière intervention 9 avril 2011
24 mars 2007 à 11:58
excellent script franchement facilement integrable
il faut juste changer les rep pour les police et cree le fichier cache !!!!

sinon nickel un petit 9/10

juste une erreur
Warning: Division by zero in graph.class.php on line 315
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
20 mars 2007 à 10:19
Nouvelle version
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
16 févr. 2007 à 09:34
c'est normal que le fichier image est toujours le meme nom, le time() sert juste a trompé le navigateur et lui faire croire qu'il n'a jamais apeller cette image en modifiant l'url afin qu'il ne cherche pas dans son cache le png.

Si le graph est blanc c'est qu'il y a un soucis dans son appel, si il est noir c'est qu'il manque quelque chose et si le graph ne s'affiche pas c'est que tu as un probleme avec les données que tu envoies.

Envoie moi ton script et la class de graph si tu veux que j'y jete un coup d'oeil.

Contacte moi sur ma boite code source
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
16 févr. 2007 à 09:29
Comment donner un nom différent à chaque graphique généré ? cela resoudrait le problème...En l'état si la création de graphiques est dynamique le graphe lui même est statique, il faut appuyer sur "F5" pour le voir évoluer.
J'ai essayer ta méthode "?'.time().'" mais ça n'a pas l'air de fonctionner, le fichier PNG généré et stocké sur le serveur web a toujours le même nom "Resource_id_8.png"

As-tu une idée ?
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
15 févr. 2007 à 15:44
Voici ce que j'ai remarqué:
Le graphique est affiché comme s'il était vide (sans data) cependant lorsque je passe la souris dessus apparait bien les données "ordonnées" mais aucune courbe.
Problème d'affichage de la courbe dans le graphique.
Ai-je bien collé ta modif où il le fallait?
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
15 févr. 2007 à 15:18
je ne suis pas sur d'avoir bien compris ce que tu veux faire.

Normalement ce bout de script

$graphVNI3D->returnGraph();

genere et affiche le graph la ou il est apellé ...
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
15 févr. 2007 à 15:08
Ok j'ai rajouté ?'.time().'" comme ceci :
echo 'nomImg.'.png?'.time().'" border="0" usemap="#'.$this->nomImg.'">

maintenant les PNG sont toujours dans mon cache sous la forme ressource_id_8.png?1171547731, mais comment récupérer ce graphique ensuite sur la page principale?
J'ai peut etre rajouté ta modif au mauvais endroit ?
Désolé d'être mauvais...
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
15 févr. 2007 à 14:37
oui j'ai deja eu ce probleme et sa résolution seras dans la mis a jours.
Quand la balise image est apellé ajoute a la fin de png :

?'.time().'"

et ton probleme de cache ne devrait plus etre
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
15 févr. 2007 à 14:22
Encore une question,

Les graphiques générés *.png vont se loger dans le cache de l'explorer ce qui veut dire que si je zap d'une page A comportant un graphique A vers une page B comportant un graphique B, je vois sur la page B le graphique A, je dois réactualiser la page pour mettre à jour le graphique.
J'ai essayé plusieurs méthode pour ne pas stocker en cache le graphique, mais sans résultat.
As-tu une solution ?

Merci
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
15 févr. 2007 à 10:14
oui c'est parfaitement possible.
Ces valeurs ne sont pas trié ni évalué. Elle s'affiche dans l'ordre dans lequel tu les as passé.
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
15 févr. 2007 à 09:56
Merci Manouille,

Encore une petite question stp, peut-on rajouter un mot derrière une valeur en absyce par ex le graphique affiche comme valeur "18" et je voudrais rajoutter derrière "h00" pour que ce soit plus explicite "18h00"
Merci
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
14 févr. 2007 à 10:01
oui j'ai pensé offir cette option de regrouper les valeurs en abscyce ...
mais le temps me manque.

Je suis actuellement en train de faire en sorte que l'on puisse afficher plusieurs histogramme sur un graphique toujours avec l'effet de 3D... mais c'est chaud :))
Mis à jour bientot.

Promis la prochaine étape est une meilleur gestion des valeurs de l'absyces...

Merci a tres bientot
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
14 févr. 2007 à 09:09
Ce n'est pas le nombre d'entrée qui me pose des problèmes enfin presque car 720 enregistrements à 1px/enregistrement... le graphe est très chouette si seulement j'avais la possibilité de ne pas afficher toutes les absyces(720) mais seulement 24 ce serait mon bonheur...
Merci encore pour cette classe, le rendu est très classe !!
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
14 févr. 2007 à 09:08
Ce n'est pas le nombre d'entrée qui me pose des problèmes enfin presque car 720 enregistrements à 1px/enregistrement... le graphe est très chouette si seulement j'avais la possibilité de ne pas afficher toutes les absyces(720) mais seulement 24 ce serait mon bonheur...
Merci encore pour cette classe, le rendu est très classe ;-)
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
13 févr. 2007 à 15:25
oui.. reduire le nombre d'entrée en abscyse et/ou agrandir la taille du graph.
Tu ne pourras jamais afficher 720 enregistrement sur 300 px de largeur.

C'est a toi d'amélioré la lecture de tes données
cs_yan06 Messages postés 9 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 16 février 2007
13 févr. 2007 à 15:06
Salut

J'utilise ton code pour représenter la charge du CPU pendant 24H00 sous forme de graphique "baton", cependant j'ai 720 enregistrements (un toutes les 2 min) en abcisses et il est impossible d'afficher ces 720 au bas du graphique.
Ya t'il une solution?
Merci
kikipounque Messages postés 12 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 13 janvier 2007
13 janv. 2007 à 12:49
bonjour,

tres bon code. juste une remarque cependant, j'aimerais pouvoir avoir la meme chose que $graphVNI3D->nbrRepere pour l'axe des abcisses. es-ce realisable. merci
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
9 oct. 2006 à 10:03
la prochaine mis a jours ce feras celon la demande de mes clients et de mon temps, je ne peux pas donner de délais ni de date... A suivre
cs_freeman70 Messages postés 5 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 9 octobre 2006
9 oct. 2006 à 09:46
cest pour quand la mise a jour ?je suis hyper impatient :)
tres bon travail et bonne continuation
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
9 oct. 2006 à 09:04
Dans une mis à jour prochaine surement :-)
cs_freeman70 Messages postés 5 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 9 octobre 2006
8 oct. 2006 à 23:20
un bon code mais malheuresement qui ne gere pas plusieurs courbes ou plusieurs histogrammes sur le meme graphique :(
guill76 Messages postés 193 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 3 juin 2016
6 sept. 2006 à 23:01
Bien mais un gros bug sur les graphes linéaires (division par 0)
exemples si $this->minValue= $this->maxValue ou si $this->maxValue=0 ça plante.
dugabar Messages postés 1 Date d'inscription vendredi 14 janvier 2005 Statut Membre Dernière intervention 8 août 2006
8 août 2006 à 09:12
Salut a vous,

code très joli et super bien fait !

Bravo 10/10 :p
galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
18 juil. 2006 à 12:58
Salut,

Je viens au nouvelle pour savoir si une nouvelle mise a jour est disponible...'
En fait j'ai vraiment besoin de pouvoir afficher plusieurs courbe sur le graphe ... et comme tu avais signaler que tu le ferais peut-etre ...

Merci et a+
hackshell Messages postés 12 Date d'inscription jeudi 25 septembre 2003 Statut Membre Dernière intervention 4 janvier 2009
25 juin 2006 à 18:40
Chapeau bas...c'est terrible!!! Excellent travail.

Utile, pratique, éducatif, simple et complexe... (10/10)

On a presque envie de te demander ton CCB pour faire un don...

Encore bravo
folken974 Messages postés 3 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 15 mai 2008
29 mai 2006 à 13:58
Bravo pour ton code, il m'a été très utile pour mieux comprendre la construction de graphique.
Quand tu intègrera la possibilité de visualisé plusieurs courbes sur le même graphique ton code sera parfait.
Vivement la mise à jour !!!
Encore bravo .
nunoluciano Messages postés 8 Date d'inscription samedi 3 septembre 2005 Statut Membre Dernière intervention 28 mai 2006
28 mai 2006 à 19:35
Excellent !
cs_rottweiler Messages postés 117 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 octobre 2013
20 mai 2006 à 05:01
good job !
mickaelpfr Messages postés 197 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 avril 2009 2
18 avril 2006 à 17:42
juste via le résultat , et le travail fournis , je met un bon 9 :)
davidbo5 Messages postés 4 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 21 mars 2006
21 mars 2006 à 17:18
Une belle source propre et bien codé à tester.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
13 mars 2006 à 17:26
Genial avec ma domotique géré en PHP c'est encore un plus ... (je met 10)

@+ JLN
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 mars 2006 à 09:13
salut
ça a l'air pas mal, mais peu souple : personellement (mais ça reste ma vision des choses...) un objet doit avoir plusieurs entrées (comme une fonction) mais aussi plusieurs sorties... Donc, faire un objet pour un graphique, alors que ton objet t'enregistre toujours l'image, je trouve ça un peu domage.
Par exemple, dans un livre de C++ (j'ai vu cet exemple sur internet aussi, donc, je suppose que c'est un classique...) on voyait :
class Chat{
void Chat(name, age....);
int getAge();
void miauler(...);
void manger(...);
}

ton chat peut miauler, et manger (c'est un exemple...), personellement, j'avais fait une class de graphique, j'y avais ajouté la possibilité de renvoyer l'image, ou de la sauvegarder (et déja, je trouvais ça pas top pour un objet, je voulais y ajouter une méthode pour obtennir la map html, et les titles associés...) mais dans des fonctions différentes pour garder plusieurs sorties... toi, tu es obligé de générer à la fois la map et l'image, et tu ne peux pas afficher l'image et garder la map en session... (ma fonction pouvait soit afficher l'image, soit la renvoyer, soit l'enregistrer...) J'ai aussi placé une seconde fonction qui permet de renvoyer l'image au format SVG (un xml qui décrit des images vectorielles...)

Dans ta fonction, on ne peut pas choisir le type de l'image, c'est un peu domage...


à part ça, c'est pas mal, mais n'oubli pas : ton code est une class, c'est réutilisable, alors profite en pour ajouter des fonctions...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
11 mars 2006 à 00:38
Le visuel est très bon, et on sent le travail derrière, mais je trouve quand même que la 3D pr un graphique est une fioriture inutile et qui ampute la clarté des données, mais soit, c'est joli alors ^^. Bravo :)
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
10 mars 2006 à 13:38
Effectivement j'ai un peu galèré, surtout pour trouver le calculs des points pourtant c'est loin d'être parfais, plein de choses pourrait encore être ajoutées et/ou améliorées.

Enfin c'etait simpa à programmer.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 mars 2006 à 13:31
Hello,

le résultat est très sympa. Je ne suis pas entré dans le détail du code, mais à première vue, c'est plutôt propre. Et puis, tu as dû te faire chier ;-)
Joli code.
galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
10 mars 2006 à 09:51
ok, no problem ... j'attendrais les mises a jour alors ... avec impatience ...

Encore bravo ... classe rapide et propre...
cs_manouille Messages postés 73 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 22 juin 2007
10 mars 2006 à 09:40
Salut galadriann. Merci pour ton commentaire.

Tu peux choisir le nombre de valeur en ordonnée que tu veux afficher via la variable $graphVNI3D->nbrRepere .

Et pour ta question N°2 et bien non, il n'est malheureusement pas possible d'afficher plusieurs courbes sur un graphique. L'idée m'a traversé l'esprit mais je n'ai pas eu le temps de le faire .
Je pense attendre un peu de voir ce qui peux être amélioré et corrigé et ferais une grosse mis à jours en incluant certainement la possibilité de tracer plusieurs courbe par graphique.
galadriann Messages postés 84 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 12 juin 2006
10 mars 2006 à 09:32
Absolument genial ... au moins on peut utiliser la classe a l'interieur d'un script directement contrairement a d'autre librairie ou il faut generer le graph a part (panachart par ex).

Juste 2 questions :
- peut avoir choisir l'intervalle entre les labels ? pour l'instant je le fait en manu car j'ai plusieurs milliers de valeurs a afficher (dont j'extrait une centaine pour l'affichage du graphe).
- y a-t'il moyen d'afficher plusieurs set de valeurs ? j'ai creer un set de script qui recupere la taille des disques utilise sur mes serveurs et pour l'instant je genere un graph par "drive". Ce serait interessant d'avoir tout les drives d'un serveur sur le meme graph.

Sinon bravo et continue.
williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007
9 mars 2006 à 12:14
c'est toujours la 1er code quand quelqu'un post un project....lol

sinon joli ton code! :)
Rejoignez-nous