PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP / jpGraph -- Achsenbeschriftung falsch


stav0815
2018-05-08, 10:47:54
Hallo Forengemeinde,

ich bin aktuell dran, meine SmartHome Werte in einer MySQL Datenbank zu erfassen.
Diese lese ich dann über PHP von meinem Webserver aus und plotte die Sache mit jpGraph.

Leider bekomme ich es nicht gebacken, die Achsenbeschriftung der X-Achse korrekt darzustellen.

http://www.s51design.de/index.php

Die Werte werden auch in eine Tabelle gepusht, damit ich die Grafik prüfen kann.


//babbedibubbedidbconnect

while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
if($zeile['val'] != null)
{
echo "<tr>";
echo "<td>". $zeile['id']. "</td>";
echo "<td>". gmdate("Y-m-d H:i:s", $zeile['ts'] / 1000). "</td>";
echo "<td>". $zeile['val']. "</td>";
echo "</tr>";
$time[] = gmdate("Y-m-d H:i:s", $zeile['ts'] / 1000);
$wert[] = $zeile['val'];
}
}
echo "</table>";

mysqli_free_result( $db_erg );
$graph = new Graph(1400,600);
//$graph->img->SetMargin(40,40,40,40);
$graph->img->SetAntiAliasing();
$graph->SetScale("textlin");
$graph->SetShadow();
$graph->title->Set("Temperatur Fritz!DECT #1");
$graph->title->SetFont(FF_FONT1,FS_BOLD);


$graph->xaxis->SetLabelAngle(90);
$graph->xaxis->SetTextLabelInterval(10);


$p1 = new LinePlot($wert);
$p1->mark->SetType(MARK_FILLEDCIRCLE);
$p1->mark->SetFillColor("red");
$p1->mark->SetWidth(4);
$p1->SetColor("blue");
$p1->SetCenter();
$graph->Add($p1);
@unlink("./file.jpg");
$graph->Stroke("./file.jpg");



Das Ergebnis gibt mir aber bei der Achsenbeschriftung nur einfache Nummern aus (vermutlich einfach der Index) und wenn ich

$graph->SetScale("textlin");

mache, dann wird aus jeder Iteration quasi eine Sekunde, was ja auch falsch ist.

Das Datum wird aus Unix-Timestamp in ms in "Y-m-d H:i:s" gewandelt (obwohl ich da auch irgendwie 2h Versatz drin habe...)
Hat einer einen Tipp für mich?

Sephiroth
2018-05-08, 22:04:02
$graph->xaxis->SetTickLabels($time);


bei SetTickLabels übergibst du nun ein array mit so vielen einträgen wie du werte hast. in deinem fall müsstest du also $time übergeben.

stav0815
2018-05-09, 08:32:05
Mist, das war einfach und da hätte ich auch selbst draufkommen müssen :rolleyes: