TChart: Viele Kurven überlagern

Rund um die LCL und andere Komponenten
Antworten
weber_8722
Beiträge: 27
Registriert: Mo 17. Feb 2014, 10:11

TChart: Viele Kurven überlagern

Beitrag von weber_8722 »

Hallo,

ich mache immer wieder wiederholte Analysen und bekomme so neue Datenarrays (z.B. 1000 x 1000 Puntke) - und entsprechende TChart-Kurven (a 1000 Punkte. Diese Linien-Kurven möchte ich nun allesamt überlagern, also gleichzeitig darstellen.
Dazu könnte ich natürlich all die viele 1E6 Daten mit AddXY einlesen, aber dann gibt es immer einen "Rückläufer" da die x-Achse immer gleich ist.
Also müßte ich (1000) verschiedene Lines definieren (was auch den Vorteil hätte verschied. Farben nutzen zu können).

ABER beide Methoden brauchen VIEL Speicher! Einfacher wäre es wenn man das Chart einfach wie ein Bitmap arbeitet, und man neue Kurven einfach über die alten schreiben würde (also nur ein Array a 1000 Punkte verwendet)!! Ist so etwas im TChart möglich?? So a la "Redraw:=False??

Viele Grüße
Stephan

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart: Viele Kurven überlagern

Beitrag von wp_xyz »

Nimm eine TUserDefinedChartSource, diese verbindet deine Datenquelle (vermutlich ein 1000x1000 Array) mit den einzelnen Series (für jede Kurve je eine ChartSource und eine Series), ohne die Daten mit AddXY der Series zuweisen zu müssen; dies geschieht stattdessen mit Hilfe eines Events. Es gibt zu diesem Thema ein Tutorial http://wiki.lazarus.freepascal.org/TACh ... hartSource.

Du wirst wahrscheinlich bei 1000 Kurven einiges zur Laufzeit erledigen müssen. Falls du damit Schwierigkeiten hast, melde dich nochmals, bzw. suche hier im Forum, ich glaube es gab dazu kürzlich eine ähnliche Frage.

EDIT:
Und ein Chart mit 1000 Kurven wird extrem unübersichtlich. Ich würde einen Scrollbar einbauen, dessen Position zwischen 1 und 1000 variiert, es wird nur der Datensatz gezeichnet, dessen Index der gewählten Position entspricht. Durch Ziehen am Scrollbar kann man alle Daten durchlaufen.

Antworten