Bonjour,
je suis en train de découvrir jpGraph, mais je bute sur un problème.
J'arrive à faire des histogrammes avec une date en abscisse, mais je n'y arrive pas avec des histogrammes cumulés. D'après mes tests, il semblerait que la méthode AccBarPlot::__construct ne prenne pas en compte mon tableau de valeurs en abscisses.
Voici comment reproduire ma situation...
Création du jeu de données (qui est normalement récupéré de la BDD) :
Création du "fond" du graphique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 $abscisse = array ( //Timestamp UNIX : nb de secondes depuis 01/01/1970 0 => '1417993200', 1 => '1418079600', 2 => '1418166000', 3 => '1418252400', 4 => '1418338800', 5 => '1418425200', 6 => '1418598000', 7 => '1418684400', 8 => '1418770800', 9 => '1418857200', 10 => '1418943600', 11 => '1419030000', ); $data_ok = array ( //Nombre de livraisons dans les délais 0 => 27, 1 => 43, 2 => 51, 3 => 34, 4 => 51, 5 => 33, 6 => 26, 7 => 38, 8 => 55, 9 => 62, 10 => 56, 11 => 49, ); $data_retards = array ( //nombre de livraisons en retard 0 => '3', 1 => '0', 2 => '0', 3 => '0', 4 => '0', 5 => '0', 6 => '0', 7 => '0', 8 => '1', 9 => '2', 10 => '0', 11 => '0', ); $ymax = 64; // Total maximum
Si j'ajoute un seul histogramme, ça fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 require_once('jpgraph-3.5.0b1/src/jpgraph.php'); require_once('jpgraph-3.5.0b1/src/jpgraph_bar.php'); require_once('jpgraph-3.5.0b1/src/jpgraph_utils.inc.php'); require_once ("jpgraph-3.5.0b1/src/jpgraph_date.php"); //préparation des repères list($tickPositions,$minTickPositions) = DateScaleUtils::GetTicks($abscisse, DSUTILS_WEEK1); //on calcule les limites, avec un peu de marge $xmin = $abscisse[0] - 60*60*24; $xmax = $abscisse[count($abscisse)-1] + 60*60*24; $ymin = 0; $ymax = ceil($ymax/10)*10; //Création du graphique $graph = new Graph(800,400); $graph->SetScale('datint', $ymin, $ymax, $xmin, $xmax); $graph->title->Set('Livraisons par jour'); $graph->xaxis->SetPos('min'); $graph->xaxis->SetTickPositions($tickPositions,$minTickPositions); $graph->xaxis->SetLabelFormatString('d/m/y',true); $graph->xgrid->Show();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $histo_ok = new BarPlot($data_ok,$abscisse); $histo_ok->SetWidth(5); $graph->Add($histo_ok); $histo_ok->SetFillColor('green'); $graph->Stroke();
Alors que si j'ajoute un histogramme cumulé, aucune barre n'est dessinée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $histo_ok = new BarPlot($data_ok); $histo_ok->SetWidth(5); $histo_ok->SetFillColor('green'); $histo_retards = new BarPlot($data_retards); $histo_retards->SetWidth(5); $histo_retards->SetFillColor('red'); $histo_total = new AccBarPlot(array($histo_ok, $histo_retards), $abscisse); $graph->Add($histo_total); $graph->Stroke();
J'ai testé sans définir les limites et repères lors la création du "fond", je vois alors les barres qui sont toutes au 01/01/1970, j'en déduis donc que les valeurs d'abscisse ne sont pas pris en compte
Est-ce que j'ai fait une erreur, ou est-ce un "bug" ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 require_once('jpgraph-3.5.0b1/src/jpgraph.php'); require_once('jpgraph-3.5.0b1/src/jpgraph_bar.php'); require_once('jpgraph-3.5.0b1/src/jpgraph_utils.inc.php'); require_once ("jpgraph-3.5.0b1/src/jpgraph_date.php"); $graph = new Graph(800,400); $graph->SetScale('datint'); $graph->title->Set('Livraisons par jour'); $graph->xaxis->SetPos('min'); $graph->xaxis->SetLabelFormatString('d/m/y',true); $graph->xgrid->Show(); $histo_ok = new BarPlot($data_ok); $histo_ok->SetWidth(5); $histo_ok->SetFillColor('green'); $histo_retards = new BarPlot($data_retards); $histo_retards->SetWidth(5); $histo_retards->SetFillColor('red'); $histo_total = new AccBarPlot(array($histo_ok, $histo_retards), $abscisse); $graph->Add($histo_total); $graph->Stroke();
Partager