Beispiel #1
0
 function createChart($stats)
 {
     $data = array();
     $nb_jour = 0;
     $temp = "";
     $date_differente = array();
     foreach ($stats as $row) {
         $data[] = $row[1];
         //le nombre d'auditeurs
         list($date[], $heure[]) = explode(' ', $row[2]);
         //les horaires
     }
     //on compte le nombre de jour différents
     foreach ($date as $test) {
         if ($test != $temp) {
             $temp = $test;
             $nb_jour = $nb_jour + 1;
             list($annee, $mois, $jour) = explode('-', $test);
             $date_differente[] = $jour . "-" . $mois;
         }
     }
     //Ajout de la date de demain, pour le dernier label de l'axe sur 7 jours
     $date_differente[] = "Maintenant";
     //calcul des valeurs maximales
     $max_auditeurs = ceil(max($data) / 10) * 10;
     //nb max d'auditeurs arrondi à la dizaine supérieure
     //$nb_jour=count($date);//compte le nb de jour présent dans les stats
     if ($nb_jour == 1) {
         $max_horaire = max($heure) + 1;
         //si un seul jour de stat, on regarde l'heure maximale connue pour ajuster l'axe des abscisses
         list($max_heure, $max_minute, $max_seconde) = explode(':', $max_horaire);
     } else {
         $max_heure = $nb_jour;
     }
     $nb_valeur = count($data);
     //largeur du graphique
     $size = $nb_valeur * 6;
     $size = $size > 1000 ? 1000 : $size;
     $size = $size < 300 ? 300 : $size;
     $lineChart = new gLineChart($size, 300);
     /*if ($max_auditeurs>100)
     		{
     		//$lineChart->setEncodingType('e');
     		}*/
     $lineChart->addDataSet($data);
     //$lineChart->setLegend(array("first"));
     $lineChart->setColors(array("ff3344"));
     $lineChart->setVisibleAxes(array('x', 'y'));
     $lineChart->setDataRange(0, $max_auditeurs);
     $lineChart->addAxisRange(0, 0, $max_heure, 1);
     $lineChart->addAxisRange(1, 0, $max_auditeurs);
     $lineChart->addLineFill('B', '76A4FB', 0, 0);
     if ($nb_jour > 1) {
         $lineChart->addAxisLabel(0, $date_differente);
     }
     if ($max_auditeurs != 0) {
         $lineChart->setGridLines(0, 1000 / $max_auditeurs);
     }
     //$lineChart->addAxisLabel(0, $heure);
     $chart = $lineChart->getUrl();
     return $chart;
 }
$lineChart->addAxisLabel(0, array("This", "axis", "has", "labels!"));<br>
$lineChart->addAxisRange(1, 30, 400);<br>
$lineChart->setStripFill('bg',0,array('CCCCCC',0.15,'FFFFFF',0.1);<br>
</code>
</p>
<h2>Line Chart with Line Fill</h2>
<?php 
$lineChart = new gLineChart(300, 300);
$lineChart->addDataSet(array(112, 125, 66, 40));
$lineChart->setLegend(array("first"));
$lineChart->setColors(array("ff3344"));
$lineChart->setVisibleAxes(array('x', 'y'));
$lineChart->setDataRange(30, 130);
$lineChart->addAxisRange(0, 1, 4, 1);
$lineChart->addAxisRange(1, 30, 130);
$lineChart->addLineFill('B', '76A4FB', 0, 0);
?>
<img src="<?php 
print $lineChart->getUrl();
?>
" /> <br> line chart using the gLineChart class.
<p>
<em>code:</em><br>
<code>
$lineChart = new gLineChart(300,300);<br>
$lineChart->addDataSet(array(112,125,66,40));<br>
$lineChart->setLegend(array("first"));<br>
$lineChart->setColors(array("ff3344"));<br>
$lineChart->setVisibleAxes(array('x','y'));<br>
$lineChart->setDataRange(30,130);<br>
$lineChart->addAxisRange(0, 1, 4, 1);<br>
    function test_LineChart_LineFill()
    {
        $lineChart = new gLineChart(300, 300);
        $lineChart->addDataSet(array(112, 125, 66, 40));
        $lineChart->setLegend(array("first"));
        $lineChart->setColors(array("ff3344"));
        $lineChart->setVisibleAxes(array('x', 'y'));
        $lineChart->setDataRange(30, 130);
        $lineChart->addAxisRange(0, 1, 4, 1);
        $lineChart->addAxisRange(1, 30, 130);
        $lineChart->addLineFill('B', '76A4FB', 0, 0);
        $text = <<<END
newLineChart: 300,300
addDataSet: 112,125,66,40
setLegend: first
setColors: ff3344
setVisibleAxes: x, y
setDataRange: 30, 130
addAxisRange: 0, 1, 4, 1
addAxisRange: 1, 30, 130
addLineFill: B,76A4FB,0,0

END;
        $parser = new gChartPhpDSLParser();
        $parser->parse($text);
        $this->assertEqual($lineChart->getUrl(), $parser->getUrl());
    }