Hallo
Ich habe mir ein Skript gebastelt mit dem ich aus einer Log-Datei verschiedene Temperatursensoren auslese und in einem Liniendiagramm darstelle.
Die Log-Datei enthält Uhrzeit und Temperaturen des aktuellen Tages. Pro Minute werden ca ein bis 2 Zeilen hinzugefügt.
Auf der y-Achse wird die Temperatur und auf der x-Achse die Uhrzeit aufgetragen.
Die x-Achse startet bei 00:00 Uhr und endet mit der letzten Uhrzeit aus der Log-Datei. Siehe Bild 1
Jetzt mein eigentliches Problem:
Ich versuche die x-achse so zu formatieren das sie von 00:00 bis 23:59 Uhr geht und die einzelnen Linien nur bis zur aktuellen Uhrzeit gehen. Soll so aussehen wie Börsenkurse. Siehe Bild 2.
Nur leider habe ich es noch nicht geschafft den Graphen so zu formatieren.
Vielleicht könnt ihr mir ja dabei helfen.
Hier mein (fast kompletter) Code:
MfG
Björn
Ich habe mir ein Skript gebastelt mit dem ich aus einer Log-Datei verschiedene Temperatursensoren auslese und in einem Liniendiagramm darstelle.
Die Log-Datei enthält Uhrzeit und Temperaturen des aktuellen Tages. Pro Minute werden ca ein bis 2 Zeilen hinzugefügt.
Auf der y-Achse wird die Temperatur und auf der x-Achse die Uhrzeit aufgetragen.
Die x-Achse startet bei 00:00 Uhr und endet mit der letzten Uhrzeit aus der Log-Datei. Siehe Bild 1
Jetzt mein eigentliches Problem:
Ich versuche die x-achse so zu formatieren das sie von 00:00 bis 23:59 Uhr geht und die einzelnen Linien nur bis zur aktuellen Uhrzeit gehen. Soll so aussehen wie Börsenkurse. Siehe Bild 2.
Nur leider habe ich es noch nicht geschafft den Graphen so zu formatieren.
Vielleicht könnt ihr mir ja dabei helfen.
Hier mein (fast kompletter) Code:
PHP-Code:
<?php
$timestamp = time();
$datum = date("Ymd", $timestamp);
$datei = "d:\TextData_$datum.log";
$array = file($datei);
require_once ("jpgraph.php");
require_once ("jpgraph_line.php");
require_once ('jpgraph_date.php');
// Die Werte der Linien in ein Array speichern
$ydata = $sensor1;
$ydata2 = $sensor2;
$ydata3 = $sensor3;
$ydata4 = $sensor4;
$ydata5 = $sensor5;
$ydata6 = $sensor6;
$y2data=$pumpe1;
$y2data2=$pumpe2;
// Werte für X-Achse
$xdata = $zeit;
// Grafik generieren und Grafiktyp festlegen
$graph = new Graph(950,550,"auto");
$graph->SetScale("datlin","0","100","auto","auto");
$graph->SetBox(); //Rand oben und rechts
$graph->SetY2Scale("lin","0","100"); // 2. Y-Achse
$graph->xaxis->scale->SetDateFormat('H:i'); //Zeitformat der x-Achse
// Die Linien generieren
$lineplot=new LinePlot($ydata);
$lineplot2=new LinePlot($ydata2);
$lineplot3=new LinePlot($ydata3);
$lineplot4=new LinePlot($ydata4);
$lineplot5=new LinePlot($ydata5);
$lineplot6=new LinePlot($ydata6);
$lineplot7=new LinePlot($y2data);
$lineplot8=new LinePlot($y2data2);
// Die Linien zu der Grafik hinzufügen
$graph->Add($lineplot);
$graph->Add($lineplot2);
$graph->Add($lineplot3);
$graph->Add($lineplot4);
$graph->Add($lineplot5);
$graph->Add($lineplot6);
$graph->AddY2($lineplot7);
$graph->AddY2($lineplot8);
// Grafik Formatieren
$graph->img->SetMargin(45,40,20,80);
$graph->title->Set(date("d.m.Y - H:i:s", $timestamp));
$graph->xaxis->title->Set("Uhrzeit");
$graph->xaxis->SetTitlemargin(30); //Abstand (in Pixel) Achsentitel zu Achse
$graph->yaxis->title->Set("Temperatur [°C]");
// Setup margin color
$graph->SetMarginColor('lightblue@0.5');
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
$Linienstaerke = 3;
$lineplot->SetColor("blue");
$lineplot->SetWeight($Linienstaerke);
$lineplot2->SetColor("orange");
$lineplot2->SetWeight($Linienstaerke);
$lineplot3->SetColor("black");
$lineplot3->SetWeight($Linienstaerke);
$lineplot4->SetColor("green");
$lineplot4->SetWeight($Linienstaerke);
$lineplot5->SetColor("red");
$lineplot5->SetWeight($Linienstaerke);
$lineplot6->SetColor("brown");
$lineplot6->SetWeight($Linienstaerke);
$lineplot7->SetColor("blue");
$lineplot7->SetWeight(1);
$lineplot8->SetColor("green");
$lineplot8->SetWeight(1);
$graph->yaxis->SetColor("black");
$graph->yaxis->SetWeight(1);
$graph->ygrid->Show(true, true); //Gitterlinien (Hauptlinien, Nebenlinien)
$graph->ygrid->setcolor("black@0.8", "black@0.9");
$graph->ygrid->SetWeight(1,1);
$graph->yaxis->scale->ticks->Set(10,5); //Werte an Y-Achse
$graph->y2axis->scale->ticks->Set(10,5); //Werte an Y2-Achse
//X-Achse
$graph->xaxis->SetTickLabels($zeit);
$graph->xaxis->SetTextLabelInterval(3); //Text auf jeder x großen Markierung
$graph->xaxis->SetLabelAngle(90);
$graph -> xaxis -> scale -> SetDateFormat('H:i');
//Legende
$graph->legend->SetPos(0.5,0.999,'center','bottom');
$graph->legend->SetColumns(1);
$graph->legend->SetLayout(LEGEND_HOR);
$graph->legend->SetLineWeight(5); //Dicke der Linien in der Legende
$graph->legend->SetMarkAbsSize(15); //Länge der Linien in der Legende
$graph->legend->SetShadow(false); // Schatten der Legende
// Legende generieren
$lineplot6 -> SetLegend ("Speicher 2 oben");
$lineplot5 -> SetLegend("Speicher 1 oben");
$lineplot4 -> SetLegend("Ofen");
$lineplot2 -> SetLegend("Speicher 1 unten");
$lineplot3 -> SetLegend("Speicher 2 unten");
$lineplot -> SetLegend("Kollektor");
// Grafik anzeigen
$graph->Stroke();
?>
MfG
Björn

Kommentar