Swing JFreechart x-Achse DateAxis, start im Ursprung

MarioW1986

Bekanntes Mitglied
Hallo zusammen, ich habe ein Freechart mit einer x-Achse als Datum bzw Zeitwert erstellt. Die Daten basieren auf Daten aus der Datenbank beginnend bei 00:00 und weiterlaufend im sekundentakt. Läufdt alles wunderbar. Nur ist mir aufgefallen, dass die Datums- bzw. Zeitachse nicht im Ursprung beginnt sondern ein Feld weiter. Meine Frage ist jetzt, ob es einen Befehl gibt mit dem ich die Achse im Ursprung starten lassen kann. Meine Suche hat bisher nicht zum Erfolg geführt, daher hab ich gedacht ich frage mich mal durch.
Zum Veranschaulichen mal kurz ein Screenshot:
graph.jpg

Wenn ich eine Numerische Axe benutze startet die Kurve im Ursprung bei der Datumsachse hingegen nicht.

Danke schonmal für die Hilfe 🙂
 
Die richtige Antwort auf deine Frage lautet: Nein, das läßt sich nicht erzwingen. Bei einer NumberAxis geht das mit dem autoRangeIncludesZero-Flag, welches per default auf true steht. Dann beginnt der Wertebereich der Achse automatisch bei 0. Bei DateAxis gibt es das nicht. Der Zahlenwert 0 ist dort gleichbedeutend mit 01.01.1970, Mitternacht. Wenn eine DateAxis bei diesem Wert beginnt, sollten sich die Datenpunkten in den meisten Fällen am rechten Rand des Charts quetschen.

Jetzt die nützliche Antwort:
Mit "Ursprung" meinst du offenbar nicht den Zahlenwert 0, sondern den kleinsten x-Wert aus deinem Dataset. Hier gibt es die "Schwierigkeit", daß eine ValueAxis sowohl eine benutzerdefinierten Wertebereich haben kann, als auch ihren Wertebereich automatisch so bestimmen lassen kann, daß alle Datenpunkte sichtbar sind. Wenn letzteres verwendet wird (was bei dir der Fall sein dürfte), erweitert die ValueAxis den notwendigen Bereich ein bisschen, und zwar um die Wert, die durch "upperMargin" und "lowerMargin" gegeben sind. Die Werte relativ zum Gesamtbereich der Achse. Der Vorgabewert ist 0.05 bzw. 5 %.
 
Zuletzt bearbeitet:
Danke für die Antwort,
was ich meine ist, dass mein Wert der bei 00:00 angezeigt wird nicht dort steht wo er jetzt ist sondern im Ursprung also bei der y-Achse startet. Aber wenn ich das richtig verstehe, ist dies mit einer DateAchse nicht möglich.
 
Ich nehme an, mit "Wert" meinst du die "00:00"? Das lässt sich nur erzwingen, wenn du diesen Wert explizit als untere Grenze der Achse festlegst. Dann bleibt die untere Grenze aber auch konstant, wenn sich die Daten ändern und ev. aus dem Wertebereich der Achse herausfallen. Was es mWn nicht gibt, ist eine Funktion "erweitere den Anzeigebereich der Achse so weit, daß das nächstkleinere oder -größere Ticklabel mit angezeigt wird".
 

Zurück
Oben