Créer un graphique avec jpgraph

Signaler
Messages postés
498
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
1 mars 2020
-
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
-
bonsoir a tous .
j'arrive pas a m'en sortir avec jpgraph.
je veux faire des statistiques mais mon graphique n'apparaît pas .
je revu toutes la configuration mais c'est juste une petite image qui apparait .
je vous prie de bien vouloir m'aider . merci d avance.
voici mon code :
<?php
//http://www.phpfacile.com/creer_un_site_web_en_php/courbes_et_histogrammes_avec_jpgraph_1.php5
require_once("../jpGraph/include_path_inc.php");
include ("../jpGraph/src/jpgraph.php");
include ("../jpGraph/src/jpgraph_line.php");
//set_include_path(get_include_path().PATH_SEPARATOR.
                 //dirname(__FILE__)."/jpgraph/");
//set_include_path(get_include_path().PATH_SEPARATOR.'../../jpGraph/src/');

$tableauAnnees = array();
$tableauNombreVentes = array();
$moisFr = array('JAN', 'FEV', 'MAR', 'AVR', 'MAI', 'JUI', 'JUL', 'AOU', 'SEP', 'OCT', 'NOV', 'DEC');

// *********************
// Production de données
// *********************
// Connexion à la BDD
 mysql_connect("localhost","root","") or die("erreur de connexion");
// Sélection de la base de données
mysql_select_db("bddgescour") or die("Erreur de selection de la BD");

$mysqlQuery = mysql_query("
SELECT  
	MONTH(dateArriveCourrier) AS MOIS, 
	COUNT(NumEnreg) AS NOMBRE_COURRIER 
	
FROM servicecourrier
WHERE YEAR(dateArriveCourrier) = '2013' 
GROUP BY MOIS
") or die('Pb de connexion mysql');


// Initialiser le tableau à 0 pour chaques mois ***********************
$tableauVentes2006 = array(0,0,0,0,0,0,0,0,0,0,0,0); 



while ($row_mois = mysql_fetch_array($mysqlQuery)) {
	$tableauVentes2006[$row_mois['MOIS']-1] = $row_mois['NOMBRE_COURRIER']; 
}

// Contrôler les valeurs du tableau
 printf('<pre>%s</pre>', print_r($tableauVentes2006,1));

// ***********************
// Création du graphique
// ***********************

// Création du conteneur
$graph = new Graph(500,300);

// Fixer les marges
$graph->img->SetMargin(40,30,50,40);    

// Mettre une image en fond
//$graph->SetBackgroundImage("images/mael_white.png",BGIMG_FILLFRAME);

// Lissage sur fond blanc (évite la pixellisation)
$graph->img->SetAntiAliasing("white");

// A détailler
$graph->SetScale("textlin");

// Ajouter une ombre
$graph->SetShadow();

// Ajouter le titre du graphique
$graph->title->Set("Graphique 'courbes' : COURRIER 2013");

// Afficher la grille de l'axe des ordonnées
$graph->ygrid->Show();
// Fixer la couleur de l'axe (bleu avec transparence : @0.7)
$graph->ygrid->SetColor('blue@0.7');
// Des tirets pour les lignes
$graph->ygrid->SetLineStyle('dashed');

// Afficher la grille de l'axe des abscisses
$graph->xgrid->Show();
// Fixer la couleur de l'axe (rouge avec transparence : @0.7)
$graph->xgrid->SetColor('red@0.7');
// Des tirets pour les lignes
$graph->xgrid->SetLineStyle('dashed');

// Apparence de la police
$graph->title->SetFont(FF_ARIAL,FS_BOLD,11);

// Créer une courbes
$courbe = new LinePlot($tableauVentes2006);

// Afficher les valeurs pour chaque point
$courbe->value->Show();

// Valeurs: Apparence de la police
$courbe->value->SetFont(FF_ARIAL,FS_NORMAL,9);
$courbe->value->SetFormat('%d');
$courbe->value->SetColor("red");

// Chaque point de la courbe ****
// Type de point
$courbe->mark->SetType(MARK_FILLEDCIRCLE);
// Couleur de remplissage
$courbe->mark->SetFillColor("green");
// Taille
$courbe->mark->SetWidth(5);

// Couleur de la courbe
$courbe->SetColor("blue");
$courbe->SetCenter();

// Paramétrage des axes
$graph->xaxis->title->Set("Mois");
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetTickLabels($moisFr);

// Ajouter la courbe au conteneur
$graph->Add($courbe);

$graph->Stroke();
?>

9 réponses

Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
3
Bonjour, la solution t'intéressè toujours?

Slt,

Perso j'aime pas trop ce casse tête. Si tu veux moi j'utilise un alternative hyper facile:Google Chart (https://developers.google.com/chart/interactive/docs/index).
Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
3
Je ne comprends pas la logique du site, ton commentaire n'apparait que si je suis connecté, et avant le mien.
Sinon, tu est bon pour refaire ton lien.
(Moi je n'utiliserais pas tout ce qui est made in google...)
J'ajouterais que "Charts are exposed as JavaScript classes", rien à voir avec du code serveur/PHP.
oui la solution m'intéresse toujours
Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
3
Alors voici mon code qui marche, et qui m'affiche un graphique avec des lignes de statistiques (http://vassili.org/blog/graph.php).
beaucoup de répétitions mais si ça peut t'aider à voir ce qui ne vas pas dans le tien.

<?php
require_once("JpGraph/jpgraph.php");
require_once("JpGraph/jpgraph_line.php");
$jour=date("Y-m-d");
$dveille1 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-1, date('Y')));
$dveille2 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-2, date('Y')));
$dveille3 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-3, date('Y')));
$dveille4= strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-4, date('Y')));
$dveille5 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-5, date('Y')));
$dveille6 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-6, date('Y')));
$dveille7 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-7, date('Y')));
$dveille8 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-8, date('Y')));
$dveille9 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-9, date('Y')));
$dveille10 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-10, date('Y')));
$dveille11 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-11, date('Y')));
$dveille12 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-12, date('Y')));
$dveille13 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-13, date('Y')));
$dveille14 = strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-14, date('Y')));
$dveille15= strftime("%Y-%m-%d", mktime(0, 0, 0, date('m'), date('d')-15, date('Y')));
$localip='192.168.1.1';
$localip2='192.168.1.11';
mysql_connect("hôte", "utilisateur", "motdepasse") or die("erreur de connexion");
mysql_select_db("base") or die("erreur de selection de base");
$reponse = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$jour' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse1 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille1' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse2 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille2' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse3 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille3' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse4 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille4' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse5 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille5' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse6 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille6' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse7 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille7' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse8 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille8' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse9 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille9' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse10 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille10' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse11 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille11' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse12 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille12' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse13 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille13' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse14 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille14' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$reponse15 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille15' AND ip NOT LIKE '$localip' AND ip NOT LIKE '$localip2'") or die("erreur de selection des donnees");
$donnees = mysql_fetch_row($reponse);
$donnees1 = mysql_fetch_row($reponse1);
$donnees2 = mysql_fetch_row($reponse2);
$donnees3 = mysql_fetch_row($reponse3);
$donnees4 = mysql_fetch_row($reponse4);
$donnees5 = mysql_fetch_row($reponse5);
$donnees6 = mysql_fetch_row($reponse6);
$donnees7 = mysql_fetch_row($reponse7);
$donnees8 = mysql_fetch_row($reponse8);
$donnees9 = mysql_fetch_row($reponse9);
$donnees10 = mysql_fetch_row($reponse10);
$donnees11 = mysql_fetch_row($reponse11);
$donnees12 = mysql_fetch_row($reponse12);
$donnees13 = mysql_fetch_row($reponse13);
$donnees14 = mysql_fetch_row($reponse14);
$donnees15 = mysql_fetch_row($reponse15);
$nb = $donnees[0];//nombre d'entrées trouvées
$nb1 = $donnees1[0];
$nb2 = $donnees2[0];
$nb3 = $donnees3[0];
$nb4 = $donnees4[0];
$nb5 = $donnees5[0];
$nb6 = $donnees6[0];
$nb7 = $donnees7[0];
$nb8 = $donnees8[0];
$nb9 = $donnees9[0];
$nb10 = $donnees10[0];
$nb11 = $donnees11[0];
$nb12 = $donnees12[0];
$nb13 = $donnees13[0];
$nb14 = $donnees14[0];
$nb15 = $donnees15[0];
$reponselocal = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$jour' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$reponselocal1 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille1' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$reponselocal2 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille2' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$reponselocal3 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille3' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$reponselocal4 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille4' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$reponselocal5 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille5' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$reponselocal6 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille6' AND ip LIKE '$localip'") or die("erreur de selection des donnees");
$donneeslocal = mysql_fetch_row($reponselocal);
$donneeslocal1 = mysql_fetch_row($reponselocal1);
$donneeslocal2 = mysql_fetch_row($reponselocal2);
$donneeslocal3 = mysql_fetch_row($reponselocal3);
$donneeslocal4 = mysql_fetch_row($reponselocal4);
$donneeslocal5 = mysql_fetch_row($reponselocal5);
$donneeslocal6 = mysql_fetch_row($reponselocal6);
$nblocal = $donneeslocal[0];//nombre d'entrées trouvées
$nblocal1 = $donneeslocal1[0];
$nblocal2 = $donneeslocal2[0];
$nblocal3 = $donneeslocal3[0];
$nblocal4 = $donneeslocal4[0];
$nblocal5 = $donneeslocal5[0];
$nblocal6 = $donneeslocal6[0];
$reponsevareu = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$jour' AND ip LIKE '78.239.41.242'") or die("erreur de selection des donnees");
$reponsevareu1 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille1' AND ip LIKE '78.239.41.242'") or die("erreur de selection des donnees");
$reponsevareu2 = mysql_query("SELECT COUNT(*) FROM stats WHERE jour LIKE '$dveille2' AND ip LIKE '78.239.41.242'") or die("erreur de selection des donnees");
$donneesvareu = mysql_fetch_row($reponsevareu);
$donneesvareu1 = mysql_fetch_row($reponsevareu1);
$donneesvareu2 = mysql_fetch_row($reponsevareu2);
$nbV = $donneesvareu[0];//nombre d'entrées trouvées
$nbV1 = $donneesvareu1[0];
$nbV2 = $donneesvareu2[0];
mysql_close();
$tableau = array($nb, $nb1, $nb2, $nb3, $nb4, $nb5, $nb6, $nb7, $nb8, $nb9, $nb10, $nb11, $nb12, $nb13, $nb14, $nb15);
$tableau2 = array($nblocal, $nblocal1, $nblocal2, $nblocal3 ,$nblocal4 ,$nblocal5 ,$nblocal6);
$tableau3=array($nbV, $nbV1, $nbV2);
$largeur = 1200;
$hauteur = 500;
// Initialisation du graphique
$graphe = new Graph($largeur, $hauteur);
// Echelle lineaire ('lin') en ordonnee et pas de valeur en abscisse ('text')
// Valeurs min et max seront determinees automatiquement
$graphe->setScale("textlin");

// Creation de la courbe
$courbe1 = new LinePlot($tableau);
$courbe2 = new LinePlot($tableau2);
$courbe3 = new LinePlot($tableau3);
// Ajout de la courbe au graphique
$graphe->add($courbe1);
$graphe->add($courbe2);
$graphe->add($courbe3);
// Ajout du titre du graphique
$graphe->title->set("Nombre d'affichages du blog, par jour, sur les seize derniers jours");

// Affichage du graphique
$graphe->stroke();
?>
Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
3
Visiblement ça ne t'a pas aidé.

--
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
4
Bonjour,

JPGRAPH n'est - à mon humble avis - pas la meilleure solution. Personnellement, j'utilise RGRAPH:
http://www.rgraph.net/

A+
Messages postés
46
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
12 décembre 2015
3
"RGraph is a HTML5 canvas and JavaScript based library"
1-Ce n'est pas du PHP
2-C'est du javascript, donc coté client, déjà dit.
3-HTML5 n'est pas encore sorti et est un ramassis de DRM (ce que certains appellent du HTML5 actuellement c'est un mélange de pleins de trucs pas forcément très bon, coté client)
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
4
J'utilise RGRAPH professionnellement même sur des navigateurs non compatibles HTML 5. Il y a des astuces, dont la librairie javascript excanvas.js pour IE 6/7.
Un exemple ici:
http://html5.immo-scope.com/article/html5_canvas_elementCanvasIntro

Pas tous les effets de graphe fonctionnent.

Je suis passé à RGRAPH car la construction des graphes est nettement simplifiée par rapport à JPGRAPH. Et les temps de traitement coté serveur sont allégés.

A+