Vraag mbt libchart.
Hallo mensen heb een vraag mbt tot libchart (extensie om grafieken mee te tekenen). Ik heb deze extensie nu al een tijdje in gebruik en werkt goed bij mij om een grafiek mee te kunnen tekenen met een vastgesteld aantal lijnen. Ik wil nu mijn programma gaan uitbreiden zodat er een onbekend aantal lijnen kan worden getekend in de grafiek. Om even een voorbeeld te geven:
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:
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.
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.
ik neem aan dat je gebruikt maakt van een db om de data uit te halen?
zoiets?
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?
yep op die manier haal ik de data op en als resultaatset heb ikdan deze array (resultset is al omgezet naar deze array)
$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.
$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.




