2 Datenreihen in 1 Chart

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
wernkrau38
Beiträge: 28
Registriert: Di 8. Mär 2016, 11:46
OS, Lazarus, FPC: Windows10
CPU-Target: Win64

2 Datenreihen in 1 Chart

Beitrag von wernkrau38 »

Hallo,
Ich will in einer Grafik 2 Linien darstellen, die sich im Wert stark unterscheiden. Deswegen habe ich eine 2. Y-Achse, die sich auf die rote Linie beziehen soll.
Geht aber noch nicht; wie kann man das verknüpfen?

Wernkrau
Dateianhänge
unit1.zip
(2.3 KiB) 89-mal heruntergeladen

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

Re: 2 Datenreihen in 1 Chart

Beitrag von wp_xyz »

  • Im Objektbaum über dem Objektinspektor eine 2.Achse hinzufügen. Alignment = calLeft oder calRight, je nachdem ob die Achse links oder rechts sein soll (das hast du schon gemacht).
  • Für jede y-Achse eine TChartTransformations-Komponente einfügen, Doppelklick auf jeder der beiden, Autoscale-Transform einfügen. Bei jeder der beiden y-Achsen im Feld Transformations die zugehörige Komponente eintragen. Damit wird unter dem Chart ein unsichtbares "Millimeter-Papier" aktiviert, das für die Skalierung der Achsen zuständig ist. Die Grenzen des Millimeterpapiers stehen in den Eigenschaften MinValue und MaxValue jeder AutoScale-Transform. Die Default-Werte 0 und 1 kannst du lassen - das heißt, dass sich jede Achse auf diesem unsichtbaren Koordensystem zwischen 0 und 1 erstreckt - d.h.: beide Achse sind gleich groß. Durch Ändern der Werte einer oder beider AutoScale-Transforms kannst du später die Kurven zusätzlich gegeneinander veschieben.
  • Trage den Index der Achse, auf der jede Serie geplottet werden soll, im Feld AxisIndexY der Series ein. Den Index findest du im Objekt-Baum. Achte bei AxisIndexX darauf, dass dort -1 oder der Index der gemeinsamen x-Achse steht.
  • Falls beide Achsen auf derselben Seite liegen, solltest du AxisPen.Visible der äußeren Achse (oder gleich beider Achen) auf true schalten.
  • In der Default-Einstellung sind die beiden Achsen sehr nah beieinander. Du kannst mit LabelsSize der inneren Achse den Abstand vergrößern (Achtung: Der Standard-Wert 0 heißt "automatisch", d.h. es wird schon ein bestimmter Wert angenommen. Wenn dein eingegebener Wert zu klein ist, rücken die Achsen zusammen, statt auseinander. Nicht verzagen: einfach einen größeren Wert ausprobieren.
  • Um die Zuordnung von Achse zu Series visuell zu unterstützen, gebe ich den Achsenelementen (Linie, Ticks, Labels, Titel) dieselbe Farbe wie der Series.
Der ganze Vorgang ist im Tutorial http://wiki.lazarus.freepascal.org/TACh ... is,_Legend nochmals beschrieben

Ich füge dein geändertes Projekt an. Ich habe zusätzlich die x-Achse im Objekt-Baum nach oben geschoben, so dass jede y-Achse denselben Index hat wie die Nummer der Transformations-Komponente. Und ich habe im FormCreate außerdem für die y-Werte der 2. Series ein Minuszeichen gesetzt, weil sonst die beiden Kurven auf der gespreizten y-Achse exakt zusammenfallen.
Dateianhänge
chart_2axes.zip
(2.5 KiB) 74-mal heruntergeladen

wernkrau38
Beiträge: 28
Registriert: Di 8. Mär 2016, 11:46
OS, Lazarus, FPC: Windows10
CPU-Target: Win64

Re: 2 Datenreihen in 1 Chart

Beitrag von wernkrau38 »

Hallo,
Herzlichen Dank für die schnelle Hilfe. Danach habe ich lange gesucht.
Jetzt schaue ich mir das Kapitel Transformation mal in Ruhe an.

Gruß, Wernkrau38

wernkrau38
Beiträge: 28
Registriert: Di 8. Mär 2016, 11:46
OS, Lazarus, FPC: Windows10
CPU-Target: Win64

Re: 2 Datenreihen in 1 Chart

Beitrag von wernkrau38 »

hallo WP_xyz,
Zum Abschluß dieses Themas schicke ich Dir mein Projekt wofür ich das gebraucht habe.

mfg, Wernkrau38
Dateianhänge
project1.zip
(9.44 MiB) 81-mal heruntergeladen

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

Re: 2 Datenreihen in 1 Chart

Beitrag von wp_xyz »

Danke für die Rückmeldung.

Antworten