AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TChart: Punkte X/Y hinzufügen

Ein Thema von Marphy · begonnen am 21. Jun 2005 · letzter Beitrag vom 5. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#1

TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 17:21
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 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)

Danke schon im Voraus für eure Antworten!

Grüße, Marco
Miniaturansicht angehängter Grafiken
untere_kurve_798.gif   kurvenkombiniert_2_570.gif   kurvenkombiniert_3_888.gif   obere_kurve_176.gif  
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Unwissender

Registriert seit: 11. Dez 2003
16 Beiträge
 
#2

Re: TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 18:24
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
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#3

Re: TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 19:37
Hallo Dochwisser,
danke für deine Antwort, wenn sie auch nicht gerade sehr erbauend war.
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 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...

Gruß, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 19:47
Spricht etwas gegen ein simples Delphi-Referenz durchsuchenTCanvas.PolyLine?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#5

Re: TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 19:51
Zitat von Khabarakh:
Spricht etwas gegen ein simples Delphi-Referenz durchsuchenTCanvas.PolyLine?
Ja, viel zu aufwending (z.B. Zeichnen der Skala).
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 20:33
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 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: TChart: Punkte X/Y hinzufügen

  Alt 21. Jun 2005, 20:37
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.

wg. "roter Kasten" : das wird nichts werden ! Der Canvas ist gefragt und sonst nichts !
Gruß
Hansa
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#8

Re: TChart: Punkte X/Y hinzufügen

  Alt 22. Jun 2005, 15:38
Hallo!
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 von Sebastian:
Oder du wartest noch etwas (1 - 2 Wochen), dann habe ich wahrscheinlich die perfekte Komponente für dich.
Soll heißen?

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 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 von Hansa:
Du mußt dir was anderes überlegen.
Habe ich schon, ist aber nicht so das Non-Plus-Ultra...

Zitat von Hansa:
wg. "roter Kasten": das wird nichts werden !
Was heißt dat denn nun schon wieder?

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?! Nein danke!

Noch Ideen?

Gruß, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#9

Re: TChart: Punkte X/Y hinzufügen

  Alt 22. Jun 2005, 15:53
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
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: TChart: Punkte X/Y hinzufügen

  Alt 22. Jun 2005, 16:06
Zitat von Marphy:
Hallo!
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 von Sebastian:
Oder du wartest noch etwas (1 - 2 Wochen), dann habe ich wahrscheinlich die perfekte Komponente für dich.
Soll heißen?
Lass dich überraschen . Naja, eben eine Komponente mit Zoom, Verschieben, Grid und einfachem relativen Zeichnen auf dieser.

Zitat:
Zitat von Hansa:
wg. "roter Kasten": das wird nichts werden !
Was heißt dat denn nun schon wieder?
Das habe ich mich auch schon gefragt .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz