Vraag mbt libchart.
De grafieken worden getekend op basis van een 2d array (graphArray). Het eerste veld graphArray[0] is altijd een datum. 2e veld is altijd snelheid en 3e is altijd afstand. Ik teken de grafiek op dit moment op deze manier:
Code (php)
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
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
<?php
header("Content-type: image/png");
include "libchart-1.2.1/libchart/classes/libchart.php";
//array met de waardes waarmee de grafiek moet worden getekend.
$graphArray = array(
array("19970101", 12, 5),
array("19970102", 14, 12),
array("19970103", 10, 8),
);
//maak een chartobject aan en vervolgens een XYdataset.
$chart = new LineChart();
$serie1 = new XYDataSet();
//zet nu de X en de Y punten in de eerste serie
for($index = 0;$index < count($graphArray);$index++)
{
$serie1->addPoint(new Point($graphArray[$index[0],$graphArray[$index[1]));
}
//maak nu een 2e serie(lijn) aan op dezelfde manier
$serie1 = new XYDataSet();
for($index = 0;$index < count($graphArray);$index++)
{
$serie2->addPoint(new Point($graphArray[$index[0],$graphArray[$index[2]));
}
$dataSet = new XYSeriesDataSet();
//voeg de gemaakte datasets to aan de XYseriesDataSet
$dataSet->addSerie("Snelheid", $serie1);
$dataSet->addSerie("Afstand", $serie2);
$chart->setDataSet($dataSet);
$chart->setTitle("snelheid/afstand");
$chart->getPlot()->setGraphCaptionRatio(0.62);
$chart->render("generated/demo5.png");
}
?>
header("Content-type: image/png");
include "libchart-1.2.1/libchart/classes/libchart.php";
//array met de waardes waarmee de grafiek moet worden getekend.
$graphArray = array(
array("19970101", 12, 5),
array("19970102", 14, 12),
array("19970103", 10, 8),
);
//maak een chartobject aan en vervolgens een XYdataset.
$chart = new LineChart();
$serie1 = new XYDataSet();
//zet nu de X en de Y punten in de eerste serie
for($index = 0;$index < count($graphArray);$index++)
{
$serie1->addPoint(new Point($graphArray[$index[0],$graphArray[$index[1]));
}
//maak nu een 2e serie(lijn) aan op dezelfde manier
$serie1 = new XYDataSet();
for($index = 0;$index < count($graphArray);$index++)
{
$serie2->addPoint(new Point($graphArray[$index[0],$graphArray[$index[2]));
}
$dataSet = new XYSeriesDataSet();
//voeg de gemaakte datasets to aan de XYseriesDataSet
$dataSet->addSerie("Snelheid", $serie1);
$dataSet->addSerie("Afstand", $serie2);
$chart->setDataSet($dataSet);
$chart->setTitle("snelheid/afstand");
$chart->getPlot()->setGraphCaptionRatio(0.62);
$chart->render("generated/demo5.png");
}
?>
Zoals in de code hierboven te zien is WEET ik dat ik snelheid en afstand krijg maar ik wil dat je op de vorige pagina aangeeft van welke elementen je een lijn wil tekenen. Dit kan dus een varieerd aantal lijnen zijn waardoor de code hierboven niet meer gaat werken omdat de array grootte steeds anders is.
Als ik dus de volgende array heb:
$graphArray = array(
array("19970101", 12, 5, 13, 18),
array("19970102", 14, 12, 9, 12),
array("19970103", 10, 8, 15, 18),
);
dan zouden er dus 4 lijnen moeten worden getekend. En er zouden dus 4 series moeten worden gemaakt (met x en y waarden daarin). Maar hoe maak ik deze variabele dynamisch aan (dus series1, 2, 3 en 4) en hoe roep ik die later aan? aangezien die variabele dus dynamisch (of anders.. maar dit was mijn idee, als er een betere manier is zou ik het graag weten) aangemaakt worden weet je niet of zij bestaan.
Dus in het kort: Ik wil een onbekend aantal lijnen kunnen tekenen met Libchart.
Hoop dat het een beetje duidelijk is en dat iemand mij kan helpen, ben er nu al een hele tijd mee bezig maar ik krijg het gewoon niet voor elkaar. Alvast bedankt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$q = mysql_query("bla");
while($f = mysql_fetch_assoc($q)){
$graphArray[] = array($f['datum'], $f['snelheid'], $f['afstand']);
}
?>
$q = mysql_query("bla");
while($f = mysql_fetch_assoc($q)){
$graphArray[] = array($f['datum'], $f['snelheid'], $f['afstand']);
}
?>
zoiets?
$graphArray = array(
array("19970101", 12, 5, 13, 18),
array("19970102", 14, 12, 9, 12),
array("19970103", 10, 8, 15, 18),
);
hier moeten vervolgens dan de lijnen mee worden getekend.
Toevoeging op 19/08/2010 14:23:57:
Heb het trouwens opgelost met dynamische variabelen dus deze kan worden gesloten.