TChart Linie neu ansetzen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

TChart Linie neu ansetzen

Beitrag von ErnstVolker »

Hallo zusammen,

wie kann man bei Linien oder Cubic Splines in einem TChart die Linie neu ansetzten.
So ähnlich der Turtle-Graphik bei Python mit "Schwänzchen" hoch bzw. runter?

Problem ist folgendes: Ich habe eine Kurve (die ähnelt der Ladekurve eines Kondensators). Die wird dargestellt. Jetzt belasse ich diese im Diagramm, rechne mit
veränderten Parametern und stelle die zweite Kurve dar. Nun gibt es vom ENDE der ersten Kurve zum ANFANG der zweiten Kurve eine Verbindungslinie. Die hätte ich gerne
weg.

Wie kann ich das beeinflussen?

Gruß und Danke

Volker

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

Re: TChart Linie neu ansetzen

Beitrag von wp_xyz »

Packe den zweiten Datensatz einfach in eine neue Series.

Wenn's trotzdem dieselbe Datenreihe sein muss, dann sorgt ein AddXY(x, NaN) für eine Unterbrechung der Linie am Ort x. Allerdings wurde dieses Feature erst vor kurzem in TAChart eingeführt, ich weiß nicht, ob die aktuelle Version das schon unterstützt, mit einem aktuellen Snapshot geht es auf jeden Fall.

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TChart Linie neu ansetzen

Beitrag von ErnstVolker »

Hallo wp_xyz,

gerade vom Posaune spielen zurück und nochmal an den Rechner.

Vielen Dank für den Tipp. Genau dass habe ich gebraucht. Vorher noch die unit "math" einfügen, damit der Compiler "NaN" auch kennt.

Ich habe einfach NACH dem Darstellen der Kurve AddXY(NAN); eingefügt und es funzt so wie ich es will. Damit kann ich bliebig viele Kuren darstellen.

Gruß

Volker

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TChart Linie neu ansetzen

Beitrag von ErnstVolker »

Hallo zusammen,

ich hab' nochmal ne Frage zum Chart. Wenn ich wie bereits beschrieben eine LineSeries im Chart drinnen habe und vorher im Objectinspector für das Chart "ReticuleMode" auf "rmCross" setze, dann erscheint ein Fadenkreuz entlang der gezeichneten Kurve. Das funktioniert sogar, wenn ich zwei Funktionen mit einer LineSeries darstelle. Dann springt das Fadenkreuz um.

Mit welchen Befehlen kann ich die x und y Werte, an denen sich das Fadenkreuz gerade befindet, an ein/zwei Textlabel übergeben? Oder an ein Fähnchen, welches am Fadenkreuz mitwandert? Was wäre die entsprechende Demo aus dem Unterverzeichnis?

Vielen Dank für Eure Hilfe

Volker

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

Re: TChart Linie neu ansetzen

Beitrag von wp_xyz »

ReticuleMode ist inzwischen veraltet. Es gibt als flexiblere Alternative die ChartTools. Beispiele findest du im Lazarus-Unterverzeichnis components\tachart\demo\tools. Sinnvoll ist auch die Dokumentation auf http://wiki.lazarus.freepascal.org/TACh ... umentation" onclick="window.open(this.href);return false;. Weitere Informationen gibt es auch im englischen User-Forum http://www.lazarus.freepascal.org/index ... ,39.0.html" onclick="window.open(this.href);return false;, meist in der Rubrik Graphics.

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: TChart Linie neu ansetzen

Beitrag von Thomas B. »

Das Chart hat das Event OnDrawReticule. Dort werden Dir u.a. die Punktkoordinaten (z.B AData.X) übergeben.

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TChart Linie neu ansetzen

Beitrag von ErnstVolker »

Hallo Thomas, hallo wp_xyz

danke für die Tipps. Die Chart Tools erscheinen vielversprechent was Pan-Verschiebung angeht. Wollte ich bei Gelegenheit auch noch einbauen.

Das OnDrawReticuleEvent ist genau dass, was ich suchte. Einfach die Werte übergeben. Prima, DANKE.

Mein:

Code: Alles auswählen

repeat
   Nachdenken;
   Suchen;
   Ausprobieren;
until funktioniert;
funktioniert halt doch nicht immer. Manchmal ist fragen schneller/besser, obwohl ich versuche dieses Forum nicht unnötig zu belästigen.
Immerhin ist mein Projekt fast fertig (zumindes in den Grenzen die ich bei Beginn gesteckt hatte). Es fallen einem immer wieder Erweiterungen ein.

Es dreht sich um's Autofahren, genauer das Beschleunigen in den einzelnen Gängen aus dem Stillstand. Eingabe sind das Motorenkennfeld, Schaltpunktdrehzahl, Getriebeübersetzungen, Drehmassenfaktoren für die Wellenträgheit im Antriebsstrang, Differenzialübersetzung, Schaltpausen zwischen den Gängen, cW, A, m, Steigung/Gefälle, Luftdichte, Rollwiderstand.

Ausgabe ist besagte Kurve v [km/h] über t . Damit man gleich ablesen kann wo man ist, entsprechnd die Werteübergabe.

DANKE und Gruß

Volker

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

Re: TChart Linie neu ansetzen

Beitrag von wp_xyz »

Wiegesagt, Reticule und OnDrawReticuleEvent werden vom Autor der Komponente nicht mehr weiter entwickelt. Als Einstieg in die ChartTools habe ich dir eine kleine Demo angehängt, bei der beim Überfahren eines Datenpunktes mit der Maus alternativ eine Kreuzchen-Markierung und/oder ein Hintfenster angezeigt werden.
Dateianhänge
ChartTools.zip
(3.18 KiB) 107-mal heruntergeladen

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TChart Linie neu ansetzen

Beitrag von ErnstVolker »

Hallo wp_xyz,

vielen Dank für die Demo. Beim Häkchen auf Crosshair und dem erscheinenden Fadenkreuzchen auf dem Datenpunkt flackert der Monitor bzw. der Hintergrund des ganzen Diagrammes. Gibt es so was wie in VBA Application.ScreenUpdating := false?

Vielen Dank. Werde es mir zu Gemüte führen.

Ich habe mal mein Projekt angehängt. Vielleicht interesseirt es ja jemanden. Hoffentlich werde ich nicht ausgelacht, weil es nicht sonderlich Objektorientiert mit eigenen Klassen und einem Haufen Zeigern geproggt ist.

Ich versuche umzusetzten was in meiner Birne vorgeht...

Gruß

Volker
Dateianhänge
Beschleunigung.zip
Lauffähige Datei Beschleunigung.evs zunächst in exe Umbenennen.
(1.11 MiB) 110-mal heruntergeladen

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

Re: TChart Linie neu ansetzen

Beitrag von wp_xyz »

Beim Häkchen auf Crosshair und dem erscheinenden Fadenkreuzchen auf dem Datenpunkt flackert der Monitor bzw. der Hintergrund des ganzen Diagrammes.
Setze mal die Eigenschaft DoubleBuffered des Chart auf true, dann sollte das Flackern aufhören.

Zu deinem Programm: Finde ich gut gelungen. Hast du damit beruflich zu tun? Das lernt man ja nicht direkt auf der Schule. Eine Anregung noch: In dem Diagramm, das sich mit dem Schalter "Motor" öffnet, weiß man nicht, welche Kurve auf die linke und welche auf die rechte Achse gehört; es fehlt die Legende, oder färbe die Achsenbeschriftung entsprechend der Linienfarbe ein.

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: TChart Linie neu ansetzen

Beitrag von ErnstVolker »

DoubleBuffered auf true schafft Abhilfe. Danke.

Das Einfärben der Achsen hab' ich im Objektinspector vorgegeben. Du hast Recht. Jemand der diese Kurven nicht kennt, kann es nicht zuordnen.
Gelegentlich habe ich mit dieser Problematik beruflich zu tun.

Man lernt es nicht zwingend in der Schule, aber als ich damals (vor ca. 20 Jahren) in der Fachoberschule aus dem Fenster in Richtung Autobahn schaute, kam mir das Erste mal die Idee, dass Berechnen zu wollen. Nur fehlte mir der mathematische Hintergrund. Das habe ich zwischenzeitlich nachgelesen. Der Aufbau der Funktion "f" des Programmes stammt aus dem Buch "Simulation technischer Systeme" von Jörg Kahlert. Wobei er das Problem mit WinFact löst. Auch die Kennlinie ist aus diesem Buch.

Gruß

Volker

Antworten