Jpgraph x-Achse scale

Hallo,
ich versuche die Grafik Bibliothek jpgraph zu benutzen.

In der Y-Achse sind Messwerte. Das passt.
Die X-Achse besteht aus Zeitpunkten, an denen die Messungen durchgeführt wurden. Leider wird die X-Achse extrem verzerrt (die ersten 30 Jahre sind zusammengequetscht und die letzten 20 Jahre sind auseinander gezogen). Die Daten der ersten 30 Jahre wurden ungefähr jeden Monat erfasst. Danach wöchentlich. Die Erstellung der X-Achse ist also nach der Anzahl der Datenpunkte korrekt. Ich möchte diese aber nach der Zeit korrekt haben.

Wie kann ich die X-Achse zeitlich gleichmäßig/linear darstellen?

Mit $graph->SetScale('datlin'); und mit $graph->SetScale('linlin'); kommt das selbe Ergebnis:

Danke,
Paul

Das was diese datlin-Geschichte macht ist die nicht-logarithmische Darstellung. Keine Ahnung, ob es noch andere Schalterchen gibt aber versuch es doch mal andersrum.

Ist vielleicht nicht die eleganteste Lösung aber berechne doch einfach den Mittelwert über alle Werte und erzeuge für jeden Tag mit gleichen Wert einen Datenpunkt. Den zeigst du als Linie zusätzlich an an. Dann hat JPgraph täglich einen Messwert und skaliert die Graphik für dich.

Vielleicht hat jpGraph auch die Möglichkeit, transparente Linien anzuzeigen, dann würde die Linie nichtmal stören.

Ansonsten denkst du daran, dass jpGraph in der free Version nicht im kommerzielle Umfeld eingesetzt werden darf?

https://jpgraph.net/features/comparison.php

@Paul
hast du es hinbekommen? und wenn ja, wie?

Nun habe ich endlich mal wieder Zeit gefunden dafür. Ja ich habe es hinbekommen. Mein Lösungsansatz:

  1. Ein Container-array erstellen. Dort ist jeder Tag vom ersten bis zum letzten Tag der Messungen ein array-key mit dem Wert ‚-‘:
 $days = array(
             '01.01.1990' => '-',
             '02.01.1990' => '-',
             '03.01.1990' => '-',
             '04.01.1990' => '-', 
             ...
     )
  1. Nun die Messdaten noch in das selbe Format bringen:
 $newData = array(
             '01.01.1990' => '52',
             '04.01.1990' => '53',
             '20.01.1990' => '54',
             '04.02.1990' => '53', 
             ...
     )
  1. Die beiden arrays mergen (die Messwerte werden in den Container array geschrieben):

$extendedData = array_merge($days, $newData);

  1. Das Ergebnis ist ein Array, in dem jeder Tag vorkommt ( => die x-Achse ist korrekt skaliert) und die Messwerte an ihrem Messdatum stehen:
 $extendedData = array(
             '01.01.1990' => '52',
             '02.01.1990' => '-',
             '03.01.1990' => '-',
             '04.01.1990' => '53', 
             ...
     )
  1. Damit dann „einfach“ eine Grafik erstellen…


$graph->xaxis->SetTickLabels($array_keys($extendedData));

$p1 = new LinePlot(array_values($extendedData));

Besten Dank für den Denkanstoß.

1 Like