[gelöst] TChart rechte Achse zuweisen

Rund um die LCL und andere Komponenten
Antworten
Linkat
Lazarusforum e. V.
Beiträge: 561
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

[gelöst] TChart rechte Achse zuweisen

Beitrag von Linkat »

Hallo,
ich habe zwei Funktionen und hätte gerne der ersten Funktion (Parabel) die linke y-Achse und der zweiten Funktion (Gerade) die rechte y-Achse zugewiesen.



ich habe schon in den Chart-Wikis nachgelesen und mir auch die Beispiele (C:\lazarus\components\tachart\demo) angesehen. Aber nichts entsprechendes gefunden.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  Chart1LineSeries1.LinePen.Color:=clRed;
  Chart1.AxisList.Axes[0].AxisPen.Visible:=True;
  Chart1.AxisList.Axes[0].AxisPen.Color:=clRed;
 
  Chart1LineSeries2.LinePen.Color:=clBlue;
  Chart1.AxisList.Axes[2].AxisPen.Visible:=True;
  Chart1.AxisList.Axes[2].AxisPen.Color:=clBlue;
end;
 
procedure TForm1.btStartClick(Sender: TObject);
var i     :Integer;
begin
  for i:=0 to 100 do begin
    Chart1LineSeries1.AddXY(i,0.001*i*i);
    Chart1LineSeries2.AddXY(i,i);
  end;
end;
Wer kann mir einen Tipp geben?

Vielen Dnk.

Gruß, Linkat

Hier der
Zuletzt geändert von Linkat am Fr 22. Jun 2012, 16:48, insgesamt 2-mal geändert.
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

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

Re: TChart rechte Achse zuweisen

Beitrag von wp_xyz »

Hier eine Schritt-für-Schritt Anleitung:
- zweite y-Achse erzeugen durch Rechtsklick im Object-Tree auf AxisList, "Neu". Es wird defaultmäßig eine zweite y-Achse erzeugt, die aber links ist. Daher im Objektinspektor "Alignment" auf alRight. Damit haben wir rechts eine zweite y-Achse.
- Ich nehme an, die Datenreihen existieren schon. Wichtig: AxisIndexY auf die betreffende y-Achse setzen (also 0 bzw. 2, in der Defaulteinstellung)
- Für jede y-Achse ein Komponente TChartAxisTransformations einfügen, auf jeder Doppelklick (oder Rechtsklick und "Edit Axis Transformations"), "Add", "AutoScale"
- Jede y-Achse im Object-Tree anklicken, und ihr im Objektinspekter jeweils eine der beiden ChartAxisTransformations zuweisen. Damit sind die y-Achsen auto-skaliert.
- Falls du die überlagerten Kurven etwas trennen willst, spiele mit den Properties Minvalue und MaxValue der AutoScaleTranform. Stelle dir vor, die Achsen laufen intern von 0 bis 1. Wenn du MinValue und MaxValue der ersten AutoscaleTransform auf 0 bzw. 0.5 setzt, und die der zweiten AutoscaleTransform auf 0.5 bzw. 1, dann verläuft die erste Kurve in der unteren, die zweite in der oberen Hälfte des Diagramms.
- Wenn ich nichts vergessen haben, sollte das alles sein. Man kann natürlich noch
- die Grids ausblenden (wird sehr unübersichtlich mit zwei Achsen)
- die Achsen und ihre Beschriftung so einfärben wie die zugehörigen Datenreihen

Wichtig: Ich weiß nicht, ob die offizelle Version schon die Transformations unterstützt. Wenn die Anleitung nicht funktionieren sollte, einen aktuellen Snapshot verwenden. Damit geht's auf jeden Fall.
Dateianhänge
2 Achsen.jpg

Linkat
Lazarusforum e. V.
Beiträge: 561
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22.1; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: TChart rechte Achse zuweisen

Beitrag von Linkat »

Hallo wp_xyz,
habe deine Beschreibung befolgt. Klappt bestens. Vielen Dank.

Gruß und schönes Wochenende,
Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Antworten