Delphi-PRAXiS
Seite 1 von 2  1 2      

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: Punkte X/Y hinzufügen (https://www.delphipraxis.net/48167-tchart-punkte-x-y-hinzufuegen.html)

Marphy 21. Jun 2005 16:21


TChart: Punkte X/Y hinzufügen
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo zusammen,
ich habe eine TChart-Komponente, der ich zur Laufzeit mehrere TFastLineSeries hinzufüge.
Jede dieser LineSeries stellt eine Kurve da, deren Punkte mit ihren ganauen X/Y-Koordinaten vorliegen.
Was ich also genau will, ist nichts anderes, als mehrere Punkte in ein Diagramm zu zeichnen, wobei alle Punkte einer Gruppe/Kurve verbunden werden sollen.

Dies klappt auch schon ganz gut:
Delphi-Quellcode:
for i := 0 to Length(Curves) do begin
  with Curves[i] do begin
   for i2 := 0 to Length(Points) do begin
     with Points[i2] do begin
       MyFastLineSeries.AddXY(X, Y);
     end;
   end;
  end;
end;
Nun, aber es funktioniert eben noch nicht 100%ig: :?
Zitat:

Zitat von Delphi Hilfe zu AddXY-Methode
Diese Funktion fügt einen neuen Punkt in der Reihe ein. Der neue Punkt hat X- und Y-Werte. Der Parameter AXLabel ist optional (kann leer bleiben ''''). Der Parameter AColor ist optional (kann clTeeColor entsprechen). Die Funktion ermittelt die Position des neuen Punktes in der Werteliste.

Und genau das darf nicht geschehen! Wenn nämlich nun die Kurve z.B. eine Art C darstellt, d.h. Teile der Kurve übereinander liegen, werden die Werte von AddXY automatisch nach dem X-Wert sortiert, was dann zum im Anhang [4] dargestellten Ergebnis führt.

Mein Problem also:
Wie kann ich eine Kurve im TChart zeichnen, ohne dass die einzelnen Kurvenpunkte umsortiert werden?

Im Anhang kann man sich die ganze Problematik noch mal in Ruhe betrachten (der Einfachheit halber nur mit einer Kurve) :wink:

Danke schon im Voraus für eure Antworten! :thumb:

Grüße, Marco

Unwissender 21. Jun 2005 17:24

Re: TChart: Punkte X/Y hinzufügen
 
Hi,

das Zauberwort ist hier wohl Funktion. TChart geht einfach davon aus, dass es sich bei deinen Werten um eine Funktion handelt. Und nach math. Definition ist jede Funktion f(x) eindeutig, dass heißt für jedes x gibt es genau ein y. Was TChart dir also anzeigt, ist der Graph einer Funktion und der ist immer "sortiert".
Du kannst nur gucken, ob es eine Series-Art gibt, die keine Funktion realisiert, die du für deine Zwecke verwenden kannst, aber denke nicht, dass TChart dass dafür geeignete Tool ist.

Viel Glück,

Gruß Unwissender

Marphy 21. Jun 2005 18:37

Re: TChart: Punkte X/Y hinzufügen
 
Hallo Dochwisser, :wink:
danke für deine Antwort, wenn sie auch nicht gerade sehr erbauend war. :pale: :mrgreen:
Zitat:

Zitat von Unwissender
das Zauberwort ist hier wohl Funktion. TChart geht einfach davon aus, dass es sich bei deinen Werten um eine Funktion handelt. Und nach math. Definition ist jede Funktion f(x) eindeutig, dass heißt für jedes x gibt es genau ein y. Was TChart dir also anzeigt, ist der Graph einer Funktion und der ist immer "sortiert".

Hmm, du magst vielleicht schon Recht haben... Aber irgendwie muss es doch noch einen Weg geben, die Punkte unsortiert hinzuzufügen!

Zitat:

Zitat von Unwissender
Du kannst nur gucken, ob es eine Series-Art gibt, die keine Funktion realisiert, die du für deine Zwecke verwenden kannst, aber denke nicht, dass TChart dass dafür geeignete Tool ist.

Alle Series stellen eine Funktion da, falls du Recht hast. Man könnte meinen, TPointSeries ist davon ausgenommen, dem ist aber nicht so: Auch hier werden die Punkte sortiert, die Punktreihenfolge ist aus der Darstellung jedoch nicht ersichtlich. Diese Series ist für meinen Zweck aber leider nicht brauchbar.
Ich hoffe, ihr wisst hier weiter... :wall:

Gruß, Marco

Khabarakh 21. Jun 2005 18:47

Re: TChart: Punkte X/Y hinzufügen
 
Spricht etwas gegen ein simples Delphi-Referenz durchsuchenTCanvas.PolyLine?

Marphy 21. Jun 2005 18:51

Re: TChart: Punkte X/Y hinzufügen
 
Zitat:

Zitat von Khabarakh
Spricht etwas gegen ein simples Delphi-Referenz durchsuchenTCanvas.PolyLine?

Ja, viel zu aufwending (z.B. Zeichnen der Skala). :shock:

Khabarakh 21. Jun 2005 19:33

Re: TChart: Punkte X/Y hinzufügen
 
Ich kenne mich mit TChart aus, aber es sollte doch möglich sein, immer nach dem Zeichnen der Skala einen Code auszuführen (OnBeforeDrawSeries?).
Oder du wartest noch etwas (1 - 2 Wochen), dann habe ich wahrscheinlich die perfekte Komponente für dich :wink: .

Hansa 21. Jun 2005 19:37

Re: TChart: Punkte X/Y hinzufügen
 
Das da kann so nichts werden. 8) Wie bereits gesagt, ist das ganze eine mathem. Funktion. Und diese ist nun mal so definiert, daß sie zu jedem x nur ein f(x) hat. Stelle Dir ein unteres Ende des C vor bei f(x)= 1 und das obere bei f(x) = 3. Beide aber für x = 1. Also ist es keine Funktion mehr (weil nicht eindeutig), sondern bloß eine Relation !

Selbst das PieChart ist eine Funktion, die allerdings die Werte im Kreis aufreiht. Zwei Kuchenteile haben da auch nicht den gleichen x-Wert !!

Du mußt dir was anderes überlegen. :mrgreen:

wg. "roter Kasten" :lol: : das wird nichts werden ! Der Canvas ist gefragt und sonst nichts !

Marphy 22. Jun 2005 14:38

Re: TChart: Punkte X/Y hinzufügen
 
Hallo!
Zitat:

Zitat von Sebastian
Ich kenne mich mit TChart aus, aber es sollte doch möglich sein, immer nach dem Zeichnen der Skala einen Code auszuführen (OnBeforeDrawSeries?).

Und was würde dieser Code dann tun?

Zitat:

Zitat von Sebastian
Oder du wartest noch etwas (1 - 2 Wochen), dann habe ich wahrscheinlich die perfekte Komponente für dich.

Soll heißen? :stupid:

Zitat:

Zitat von Hansa
Das da kann so nichts werden. Wie bereits gesagt, ist das ganze eine mathem. Funktion. Und diese ist nun mal so definiert, daß sie zu jedem x nur ein f(x) hat. Stelle Dir ein unteres Ende des C vor bei f(x)= 1 und das obere bei f(x) = 3. Beide aber für x = 1. Also ist es keine Funktion mehr (weil nicht eindeutig), sondern bloß eine Relation !

Selbst das PieChart ist eine Funktion, die allerdings die Werte im Kreis aufreiht. Zwei Kuchenteile haben da auch nicht den gleichen x-Wert !!

Ist ja alles logisch, habe das schon verstanden :wink: Aber programmiertechnisch wäre es für Steema doch kein Problem gewesen, eine Art "AddXYNoSort" o.ä. zu implementieren, warum sollten sie ihre Komponente dann derart einschränken?

Zitat:

Zitat von Hansa
Du mußt dir was anderes überlegen.

Habe ich schon, ist aber nicht so das Non-Plus-Ultra... :(

Zitat:

Zitat von Hansa
wg. "roter Kasten": das wird nichts werden !

Was heißt dat denn nun schon wieder? :shock:

Zitat:

Zitat von Hansa
Der Canvas ist gefragt und sonst nichts !

Alle Punkte, Linien, Achsen, Skalen selbst zeichnen? Auto-Min/-Max, Skalierung, Scolling, Zoom selbst implementieren?! :shock: :pale: :gruebel: Nein danke! :???: :wink:

Noch Ideen? :mrgreen:

Gruß, Marco

BrunoT 22. Jun 2005 14:53

Re: TChart: Punkte X/Y hinzufügen
 
Hi Marco,

könnte man nicht so tun, als würde die Kurve aus zwei Serien bestehen?
dazu Maximum suchen und die Kurve in zwei Serien aufteilen.

mfg

BrunoT

Khabarakh 22. Jun 2005 15:06

Re: TChart: Punkte X/Y hinzufügen
 
Zitat:

Zitat von Marphy
Hallo!
Zitat:

Zitat von Sebastian
Ich kenne mich mit TChart aus, aber es sollte doch möglich sein, immer nach dem Zeichnen der Skala einen Code auszuführen (OnBeforeDrawSeries?).

Und was würde dieser Code dann tun?

Wenn du dort deinen PolyLine-Code unterbringst, müsste doch die Skala schon gezeichnet sein. Also schonmal weniger zu zeichnen.
Zitat:

Zitat:

Zitat von Sebastian
Oder du wartest noch etwas (1 - 2 Wochen), dann habe ich wahrscheinlich die perfekte Komponente für dich.

Soll heißen? :stupid:
Lass dich überraschen :stupid: . Naja, eben eine Komponente mit Zoom, Verschieben, Grid und einfachem relativen Zeichnen auf dieser.

Zitat:

Zitat:

Zitat von Hansa
wg. "roter Kasten": das wird nichts werden !

Was heißt dat denn nun schon wieder? :shock:
Das habe ich mich auch schon gefragt :stupid: .


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.
Seite 1 von 2  1 2      

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