Ungenutzter Platz und fehlende Achsenwerte bei logarithmischen Kursdiagrammen

Hallo, ich habe zwei Beobachtungen zu Kursdiagrammen:

  1. Wenn man bei einem Kursdiagramm logarithmische Skalierung wählt, dann wird der vertikale Platz sehr schlecht genutzt. Anbei ein paar Beispiel-Screenshots, bei denen über 40% der Diagramm-Höhe verschenkt wird. Die Diagramm-Kurven wirken dadurch sehr flach, ohne Dynamik. Auch ein “Zoom-In” mit dem Mausrad hilft hier nicht. Schon bei einem Notch werden die Kurven oben bereits abgeschnitten, während unten immer noch viel Platz ungenutzt bleibt.

Wunsch: Die Y-Achse sollte per default so skaliert sein, dass die enthaltenen Kurven oben und unten max. 5% der Diagramm-Höhe ungenutzt lassen.

  1. Auch die Werte-Beschriftung auf der Y-Achse ist ungenügend. Bei logarithmischer Skalierung werden nur die Werte mit 10-er Potenzen beschriftet, was bei einigen Diagrammen dazu führt, dass man gar keine Beschriftung auf der Y-Achse mehr sieht, s. Beispiele.

Wunsch: Alle Wert-Marker auf der Y-Achse sollten beschriftet werden, nicht nur die 10-er Potenzen.

Danke schon im Voraus fürs Reinschauen.







1 Like

Ja, das ist beides nicht neu. Thread für die Ticks (die eine Eigenschaft von SWTChart sind):

Du kannst die Dividenden herausnehmen, wenn dir mehr Platz für den Kursverlauf wichtiger ist.

Danke für die Rückmeldung und für den Workaround-Hinweis, die Dividenden-Markierungen auszuschalten.

Noch besser als ein Workaround wäre aber, die vertikale Skalierung anzupassen. Wenn die Dividendenmarken bei der linearen Darstellung nur 20% der Höhe wegnehmen (s. meinen ersten Screenshot), dann gibt es eigentlich keinen Grund, warum sie bei der logarithmischen Darstellung 44% wegnehmen müssten. Könnte es sein, dass dort nur irgendwelche Diagram-Parameter falsch gesetzt werden? Und selbst die 20% sind noch zu großzügig. 10% hätten für die kleinen Divi-Marker auch gereicht.

Aber falls die komplette Diagramm-Komponente nicht von euch stammt und ihr sie über die verfügbaren API-s gar nicht besser konfigurieren könnt, dann verstehe ich es natürlich.

Jedenfalls, danke fürs Reinschauen!

Für die Anordnung der Marken wird ein Kurs erfunden. Da den richtigen zu finden, ist nicht ganz so einfach.

Manche Leute wollen auch noch den Betrag der Dividende im Diagramm sehen.

Das mit den Dividenen möchte ich auch - ich verstehe das (Programmier-)problem immer noch nicht. Die Kästchen blende ich z.B. 5 mm über der Unterkante ein, die Werte darüber. Auf der X-Achse nehme ich die Datumsposition, auf der Y-Achse einen fixen Abstand von der Unterkante, der ggf. mit der Größe des Fensters gewichtet wird, aber nichts mir der Kursdarstellung zu tun hat.

Du mußt den „fixen Abstand von der Unterkante“ in einen Kurs übersetzen.

Ja, genau, wo ist denn da aber das Problem, das ist Mittelstufenmathematik.
Meines Erachtens ist die Formel für Ypos wie folgt:
Yoben = Max Wert der Y-Achse
Yunten = Min Wert der Y-Achse (muss > 0 sein, wegen log, sonst ggf. auf 0,001 setzen o.ä.)
Hwunsc = Sollwert in Prozent, also in 20% Höhe des Diagramms = 0,2
Linear:
Ypos = (Yoben-Yunten)*Hwunsch
Logarithmisch:
Ypos = 10^(((log10(Yoben)-Log10(Yunten))*Hwunsch)+log10(Yunten))
Ich hänge nochmal einen Screeshot einer Skizze zur Erläuterung an.
Auch könnte man in den Log-Charts den Kurs zum Einstandspreis wieder aktivieren, der hat IMHO nichts damit zu tun. Hoffe das hilft, freue mich auf gemeinsames Voranbringen. LG, Christian

Kennen wir nicht, und der letztlich gewählte Kurs nimmt auch Einfluß auf diese Werte.

Dann mach Du doch mal einen Vorschlag, was gehen könnte oder wo man den Faden aufnehmen könnte.

Wenn ich den Code richtig lese

  • definiert sich der oberste/unterste Wert zunächst an den Kursdaten bzw. den errechneten Indikatoren
  • Für die Anzeige von Monat / Quartal / Jahr wid der obere Wert um 8% vom höchsten Kurs erhöht um Überlappung von Kurs und Text zu vermeiden
  • wenn Dividenden angezeigt, werden diese bei 84% vom unteren Kurs eingezeichnet

Was die logaritmische Darstellung betrifft, die Chart Engine arbeitet fest nach LOG10 und nur bei 1, 10, 100 usw. wird die Achse entsprechend eingezeichnet. Zwischenwerte wie min. 17 u. max. 86 wären hilfreich als Beschriftung der Achse, liegt aber weder auf 10 noch 100.

Hallo Rafa,

das passt doch prima zu meinem Vorschlag im Falle der loghartmischen Darstellung die Position eben nicht über einen linearen Dreisatz zu ermitteln sondern die gewünschten Höhen in die passende “Flughöhe” umzurechnen. Chirlu hatte aber gesagt, dass der min und max Wert nicht zur Verfügung stünde, bedeutet das, das wir den aus der function nicht herausbekommen?

Wenn ich die Dividende (und andere Einblendungen) eben nicht am Kurs festmache, sondern vom min oder max Werte (der ja aus dem Kurs im Code entsteht) dann müsste es doch so funktionieren, wie von mir beschrieben.

Hallo,

die Lösung ist, dass wir eine weitere Y-Achse hinzufügen müssen, damit auch alle eventualitäten abgedeckt sind. (Zoom, Teilausschnitte, Zeiträume etc. etc. etc.).
Ich bin selber noch nicht dazu gekommen, zu schauen, ob SWT uns eine weitere Y-Achse anbieten kann. Wenn ja, dann werden werden wir sie fest hinzufügen.

Gruß
Alex

Hallo Alex,

kenne mich im Bereich der GUI Widgets nicht aus, kann daher nicht direkt beitragen. Wenn ich mit der Mathematik was helfen kann, gerne melden, das “Wie” hatte ich ja weiter oben gepostet. Ich wünsche gutes Gelingen.

Christian

1 Like

Hallo zusammen. Ich trage seit längerem schon eine Feature Idee mit mir herum, die evtl. hierzu passen könnte: In den Kursdiagrammen zusätzlich zu den Markierungen wie “Investitionen”, “Aktiensplit”, “Hoch/tief”, … eigene Hinweise einblenden, die an bestimmten Daten passiert sind, also z.B. den Einbruch ab 17.2.2020 mit “Corona breitet sich aus”, der Einbruch im 2008 mit “Finanzkriese”, etc. pp. Dann könnte man man in die Historie schauen und müßte nicht immer grübeln, was denn da gerade das “Rauf” oder “Runter” war.
Juergen