Hallo zusammen,
ich beschäftige mich nun ne gewisse Zeit schon mit JPGraph und komme einfahc nciht weiter.
Ich möchte Laufzeiten eines Programms in einem Balkendiagramm darstellen. Diese Zeiten lese ich aus einer MySQL DB aus.
Wie kann ich nun auf der Y-Achse eine Zeiteinteilung erreichen?
Denn SetScale biete als Formatierung für die X-Achse das Format "dat" an. aber ich kann es nicht für die Y-Achse verwenden.
PHP-Code:
<?php
//**** Bibliotheken einbinden ****
include ("src/jpgraph.php"); // JPGraph
include ("src/jpgraph_bar.php"); // Balkendiagramm
include("src/jpgraph_date.php");
include("laufzeit.php"); // Laufzeiten aus der MySQL DB
$Y_laufzeit=array();
$X_datum= array();
while($row1=mysql_fetch_row($sql))
{
$Y_laufzeit[] = date('Hi', strtotime($row1[3]));
$X_datum[] = $row1[2];
}
//**** Grafik generieren ****
$graph = new Graph(1600,550,"auto"); // Höhe,Breite,"Automatisch Format"
$graph->SetScale("textint"); // Skala festlegen: "lin" = Lineare Skala
//**** Schatten hinzufügen ****
$graph->SetShadow();
//**** Rahmen der Grafik ****
$graph->img->SetMargin(100,100,50,120);
//**** Balkendiagramm generieren ****
$bplot = new BarPlot($Y_laufzeit); // Werte aus dem Array in Graphen umwandeln
$graph->Add($bplot); // Erstellten Graphen in die Grafik eintragen
//**** Balkenformatierungen ****
$bplot->SetFillColor('#9FF781'); // Farbe der Balken
$bplot->SetFillGradient("#9FF781","white",GRAD_HOR); // Farbverlauf in den Balken
$bplot->value->Show(); // Zeigt die einzelenen Werte über jedem Balken an
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,12); // Schriftartformatierungen der Werte
$bplot->value->SetAngle(45); // Schrift der Werte um 45Grad drehen
$bplot->value->SetFormat('%01.02f'); // Gibt an, wieviele Stellen nach dem Komma
$bplot->SetShadow(); // Schatten hinter den Balken
$bplot->value->SetColor("#088A08"); // Schriftfarbe der Werte über den Balken
//**** Grafikformatierungen ****
$graph->title->Set("Laufzeit Statistik (max. 30 Läufe)"); // Name der Grafik
$graph->xaxis->SetTickLabels($X_datum); // Beschriftung unter jedem einzelnem Balken (Datum)
$graph->xaxis->SetLabelAngle(90); // Schrift unter den Balken um 45Grad drehen
$graph->xaxis->title->SetFont(FF_ARIAL,FS_NORMAL,14); // X
$graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,14); // Schriftgröße unter den Balken
$graph->yaxis->title->Set("Laufzeit"); // Titel für Y-Skala
$graph->yaxis->SetTitlemargin(50);
$graph->yaxis->title->SetFont(FF_ARIAL,FS_NORMAL,14); // Y
$graph->yaxis->scale->SetGrace(35); // Y-Fläche vergrößern, damit die Werte nicht abgeschnitten werden
$graph->title->SetFont(FF_ARIAL,FS_NORMAL,14); // Schriftartformatierungen Titel
//**** Graphik ausgeben ****
$graph->Stroke();
?>
In der WHILE-Schleife empfange ich die Laufzeiten im String Format (HH:MM) und wandle sie mit der Funktion DATE um.
Wenn ich nun beim umwandeln
PHP-Code:
$Y_laufzeit[] = date('Hi', strtotime($row1[3]));
bei 'Hi' ein Doppelpunkt einfüge (H:i), kommt Jp Graph nicht mehr klar und meckert, dass das Array non-numerische Werte enthält. Ebenso wird die gleiche Meldung ausgegeben, wenn ich nichts umwandle und es im String Format belasse.
Ist es nicht möglich, z.B. solche Laufzeiten darzustellen:
2014-04-10 00:10
2014-04-11 00:13
2014-04-12 00:09
2014-04-13 00:15
Das Datum soll auf der X-Skala unten stehen.
Im Anhang habe ich das Diagramm eingefügt, wie ich es bisher erreicht habe.
Vielen Dank schon mal.