Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TChart - Y-Achsen neu positionieren bei grossen Achswerten? (https://www.delphipraxis.net/90820-tchart-y-achsen-neu-positionieren-bei-grossen-achswerten.html)

moelski 24. Apr 2007 12:20


TChart - Y-Achsen neu positionieren bei grossen Achswerten?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin !

Kann mir da jemand einen Tip geben ... Und zwar mal als Grundlage das angehängte Bild ...
Mann kann sehen das die Zahlen der grünen Achse die blaue Achse überschreiben. Ich habe als Settings für die Achsen Pixels verwendet (Axis -> Position -> Position / Units).

Frage ist nun ... Gibt es einen Automatismus der diese Übereinanderlegen der Y-Achsen verhindern kann? Oder gibt es dafür ein Stück Code was das Überwacht? Weil im Prinzip müsste der linke Rand vom Chart breiter werden damit die Achsen ohne Überschneidungen dargestellt werden können. Gleiches gilt natürlich für Achsen rechts.

DP-Maintenance 24. Apr 2007 12:30

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.

uwewo 24. Apr 2007 12:41

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Unter property PositionPercent, kannst Du doch die Position der Achsenbeschriftung festlegen.

Bei Eingabe eines negativen Wertes, verschiebt sich die linke Achse noch weiter nach links.

moelski 24. Apr 2007 12:47

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Moin !

Jo das is mir ja auch durchaus klar.

Aber nimm folgendes Szenario ... Du hat eine Y Achse wo die Werte stetig steigen. Sagen wir mal von 0-10 bis 0-10000.

Bei 0-10 passt alles. Aber irgendwann sind die Zahlen an der Achse so breit das sie eben die nebenstehenden Achsen überschreiben oder ganz aus dem Chart rausragen.

Und hier bräuchte es eine Automatik die das überwacht. Ein einmaliges Einstellen reicht da eben nicht. Das habe ich ja eh schon getan.

uwewo 24. Apr 2007 13:18

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Hst Du
Delphi-Quellcode:
Axis.Automatic := True;
stehen??

Habe mir gerade ein Demo gebastelt, wo ich über ein Edit-Feld WERTE VON 10- 100000 eingegeben habe.
Dabei wurde das Chart und die Y-Achse automatisch angepasst.

moelski 24. Apr 2007 13:24

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Moin !

Hmm ich habe bei mir auch mal die Axis auf Automatic gestellt. Aber der Abstand von Achse zu Achse bleibt gleich wenn die Werte zu gross werden. Und auch das Überschreiben ist wieder da.

Kann es sein dass das Automatic sich eher auf die Anpassung der Endwerte bezieht und nicht um die Position der Achse?

Könnte ich mal deine Demo sehen? Wenns geht mail mal an dominik ÄTTT logview PUNKT info

uwewo 24. Apr 2007 13:35

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Stelle es lieber direkt hier rein.

moelski 24. Apr 2007 13:41

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin !

Ok, da geht es. Aber das ist auch nur eine Achse. Geht das auch mit mehreren Y Achsen?
Im Anhang mal meine Demo. Vielleicht kannst du das da mal versuchen ?!

uwewo 24. Apr 2007 14:16

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
So ganz testen kann ich es nicht da ich kein Chart Tool installiert habe.

Habe aber in diesem Projekt das Chart entfernt, neuerstellt und 6 Series hinzugefügt.
Alle habe Standard Werte und es sieht Ok aus.

moelski 24. Apr 2007 14:25

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Kannst du deins mal hier posten bitte ?

uwewo 24. Apr 2007 14:35

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Habe ich nicht gespeichert :cry:
Nimm Deine Demo lösche TChart, erstelle TChart neu und füge 6 Series hinzu.

Teste auch mal anstatt

Delphi-Quellcode:
    Chart1.Series[5].AddY(ArcTan(Sin(I/400) * Cos(I/300)) + 1); }
dieses
Delphi-Quellcode:
   
Chart1.Series[0].Add(Sin(I/200) + 1 * i,'',clred);

moelski 24. Apr 2007 14:46

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Moin !

Klar geht das dann. Aber du verwendest dort nur eine Y Achse.
Und ich möchte eben für jede Kurve eine eigene Y Achse verwenden. und da is der Haken bei die Sache ...

uwewo 24. Apr 2007 15:03

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Hi Dominik,

die Hilfe zu AddY bzw. Add zeigt folgendes:

Zitat:

Deklaration

function AddY(Const AYValue: Double; Const AXLabel: String; AColor: TColor): LongInt;

Beschreibung

Die TChartSeries-Methode AddY dient zum Einfügen neuer Reihenpunkte, wenn Ihnen kein X-Wert für den Punkt bekannt ist.

Diese Funktion fügt einen neuen Punkt in der Reihe ein. Der neue Punkt hat nur Y-Werte. Der X-Wert wird automatisch berechnet.

Der Parameter AXLabel ist optional (kann leer bleiben "'').

Der Parameter AColor ist optional (kann clTeeColor entsprechen).

Die Funktion ermittelt die Position des neuen Punkts in der Werteliste.
Beide Funktionen sollten also identisch sein.
Mehrere Werte für Y, ergeben sich doch eigentlich durch das hinzufügen der Series.

moelski 24. Apr 2007 15:13

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Moin !

Ja nö ich glaube wir reden aneinander vorbei ....

Es geht mir nicht darum das ich mehrere Y Werte habe. Ich möchte folgendes haben:

6 Kurven, 6 Y- Achsen, 1 X-Achse

Je Y Achse eine Kurve (Serie).

Das resultiert also in 6 unabhängigen Sirien mit Achsen.

Soweit so gut. Wenn man nun die Position der Achsen nicht anpasst, dann würden alle 6 übereinander liegen. Das sieht ziemlich übel aus. Also legt man erstmal 3 Achsen auf die Rechte Seite. Nun hamma links und rechts je 3 Achsen die übereinanderliegen. Nun setzt man die Position unter Chart -> Axis -> Position -> Position / Units.
Man stellt also die Sache so ein das die Achsen sich nicht mehr überlagern. Bis dahin is auch alles ok. Aber wenn nun Punkte in einer Serie eingetragen werden, ändert sich die zugehörige Y-Achse. Sogen wir mal von 900 auf 1000. Und nun können sich eben die unterschiedlichen Y Achsen überlagern.
Und genau dafür suche ich eine Lösung. Das macht TeeChart leider nicht so ohne weiteres :-(

uwewo 24. Apr 2007 15:32

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Ja ich denke Du hast recht, wir reden aneinander vorbei.
In einem Diagramm gibt es für mich immer nur eine X und Y Achse, auf diesen Achsen kann ich mehrere Werte ausgeben lassen. Das galube ich zumindest, bin allerdings schon etwas verwirrt mittlerweile.

Kannst Du mal ein Bild zeichnen, oder einen Screenshot anhängen der das gewünschte Ergebnise zeigt.

moelski 24. Apr 2007 15:44

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin !

Naja eigentlich sieht man es ja in der Grafik vom ersten Posting. Aber hier ist nochmal so ein Ding.

Man kann sehen wie die beiden Achsen auf der linken Seite über andere Achsen drüberzeichnen weil eben die Zahlen zu lang sind.
Und genau das will ich verhinden.
Und bedenke ich brauche für jede Serie eine Achse !!!

uwewo 24. Apr 2007 16:05

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Ok, denke jetzt wird es klarer :???:

Blende doch alle Achsen aus, und zeichne direkt auf dem Canvas von TChart deine Skalierung.

moelski 24. Apr 2007 16:11

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Na super. Eigentlich möchte ich der Komponente meine Daten geben und die soll das zeichnen.
Selber machen will ich ja eben vermeiden ;)

uwewo 24. Apr 2007 16:22

Re: TChart - Y-Achsen neu positionieren bei grossen Achswert
 
Ich dachte ja auch nur die Achse zeichnen, und das auch nur wenn sich die Werte stark verändern.
Leider gibt es keine Möglichkeit die Achsen für jede Series auszublenden, oder ich hab zumindest nichts gefunden. Sorry!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz