Problem: JPGraph und Liniendiagramm

Djunix

Mitglied
Hallo alle miteinander,
setzt mich im moment mit JPGraph auseinander.
Ich würde ganz gerne ein Liniendiagramm erstellen, das den Zeitlichen Verlauf von Messdaten darstellt. Dazu habe ich eine x-Achse (Zeit) und eine Y-Achse (Messwert).
Ich hab es zwar geschaft so ein Liniendiagramm zu erstellen, allerdings hab ich ein paar Probleme mit der x-Achse. Und zwar wie bekomme ich es hin das ich dem JPGraph sage das ich bei 10min den Wert 13 habe bei 13min den Wert 34 usw. und das ich dann eine x-Achsen Beschriftung habe die in Zehner Schritten von 0-100 geht.
mein bisheriger Code sieht so aus:

PHP:
<?php
include ( "./jpgraph/src/jpgraph.php");
include ("./jpgraph/src/jpgraph_line.php");

// Test-Daten
$ydata = array(11,3, 8,12,5 ,1,9, 13,5,7,12 );
$xaxe = array(0,15,20,30,40,50,60,70,80,90,100);


// Create the graph. These two calls are always required
$graph = new Graph(350, 250,"auto");    
$graph->SetScale( "intint");


//Beschriftung
$graph->title->Set ('Verlauf');
$graph->xaxis-> title->Set("Time" );
$graph->yaxis-> title->Set("Value" ); 

//Werte der x-Achse setzen
$graph->xaxis->SetTickLabels($xaxe);

// Create the linear plot
$lineplot =new LinePlot($ydata);
$lineplot ->SetColor("blue");

// Add the plot to the graph
$graph->Add( $lineplot);

// Display the graph
$graph->Stroke();
?>

Das Problem bei dem Script ist das er die y-Daten den x-Daten zuordnet, aber die x-Daten auch gleichzeitig als Beschriftung nimmt.
Ich hoffe es ist halbwegs verständlich was mein Problem ist.
 
So, ich glaub ich bin ein Stück weiter, hab einfach das "auto" entfernt und die Skalierung manuell gesetzt:

PHP:
$graph = new Graph(350, 250);    
$graph->SetScale( "intlin",0,50,0,100);

aber jetzt scheint es so das ich 100 Werte brauche damit der Graph das komplette Diagramm ausfüllt (wegen xmax=100). Kann ich nicht einfach sagen bei x=10 hat y den Wert 20 usw. und das ich dann einfach zum Beispiel 10-Werte oder so hab die über das Diagramm verteilt sind und er die einfach verbindet?
 
Problem gelöst, die zu den y-werten dazugehörigen x-werte einfach beim lineplot mit angeben:

PHP:
$lineplot =new LinePlot($ydata, $xdata);
 
Habe ein neues Problem:
Ich hab zum einen Messwerte und zum anderen das dazugehörige Datum+Uhrzeit.
Ich möchte nun ein Diagramm erstellen was auf der y-Achse Messwerte hat und auf der x-Achse die Uhrzeit, dann soll für jeden Tag eine Linie erstellt werden.

z.B.:
Wert | Uhrzeit
400 | 14:30:12 (11.08.2006)
450 | 14:45:15 (11.08.2006)
500 | 14:31:15 (12.08.2006)
550 | 14:31:15 (12.08.2006)

Dann hätte ich eine Linie für den 11.08 und eine für den 12.08

Zunächst wandel ich die Uhrzeiten (nur die Uhrzeit nicht das Datum) in einen Timestamp, um dann die min und max-Werte zu ermitteln.
Diese gebe ich dann bei der Skalierung für die x-Achse an.
Bis dahin klappts auch noch ganz gut, allerdings werden da dann die Timestamps als Beschriftung angezeigt, ich hätte da aber gerne 14:30:00 und so stehen.

Ich fasse nochmal zusammen:
Ich hätte gerne ein Liniendiagramm was mir den zeitlich Verlauf von Werten anzeigt und zwar mit einer sinnvollen x-Achsen-Beschriftung wie z.B.: 14:00:00 14:15:00 14:30:00 usw.
 
Zurück