[Java] Dynamische X-Achse für ein Diagramm

Serious_Sam

Commander
Registriert
Mai 2011
Beiträge
2.904
Hi,

ich bin auf ein Problem gestoßen, wo ich erstmal nicht weiterkomme.

Ich habe Datensätze an Kosten und zu jedem Datensatz ein Datum (Kosten, Datum(HH.MM.YY)).

Dies möchte ich visualisieren in einem Graphen.
Die Daten ändern sich ständig.
Für einen Tag habe ich manchmal 6 Uhrzeiten, manchmal 10. Auch die Anzahl der Tage, Start und Endtag ändern sich mit jedem Datensatz.

Auch will ich von 100 Datensätzen evtl. nur 30 gut verteilt darstellen.

Wie lässt sich sowas dynamisch gestalten, wie hier auf:
https://bidvoy.net/Honor_8/9355

Auf der X-Achse soll das Datum stehen.

Ich habe bislang keine Idee.
 
Nun du hast eigentlich zwei Probleme.

A) Die Skalierung
Normalisiere die X-achse einfach auf ein Interval. Ja nach Dauer deiner Datensätze wären das z. B. 6h oder 1 Tag.
-> Dies könntest du auch einfach konfigurierbar machen
-> Deine Datensätze zeigst du dann skaliert zum Interval an

B) Die Einschränkung von 100 auf 30 Datensätze
Ich schätze einmal es ist nicht so einfach, dass du einfach nur jeden ~3,3 Datensatz brauchst...
Dann sind wir auch schon beim Hauptproblem - du musst das selber filtern, nach solchen Datensätzen die für dich relevant sind.
 
Wenn es für ne Webseite ist, ist vielleicht d3js (Data Driven Documents) einen Blick wert. Ich hatte es vor Jahren für ein kurzes Projekt eingesetzt. Der Einstieg war einfacher als gedacht.

Die Darstellung von Diagrammen erfolgt per SVG. Daten werden als JSON (Arrays/Objekte) bereitgestellt. Man muss keine Werte für die Darstellung umrechnen, sondern bleibt in seinem Domain-Wertebereich. Die Umrechnung wird deklarativ über die Scale-API festgelegt. Hier ist die Doku für die lineare Skalierung mit Beispielen:
https://github.com/d3/d3-scale/blob/master/README.md#continuous-scales
 
burfi hat die probleme schon schoen formuliert. wenn deine zeitpunkte untereinander echt voellig beliebige intervalle ergeben wuerde ich einfach eine intervalllaenge von (enddatum - anfangsdatum) / 30 waehlen und mir fuer jedes inkremente um diese intervalllaenge den nahegelegensten datenpunkt besorgen und die verbliebenen verwerfen. ob du dann die konstante gewaehlte intervallskala nimmst und den naehstgelegenen wert nimmst, oder das entsprechende wahre X des gewaehlten werts ist deine wahl.
 
Zurück
Oben