Italian community of Lazarus and Free Pascal

Programmazione => Graphics => Topic aperto da: fr33d0m - Aprile 09, 2026, 01:48:15 pm

Titolo: [RISOLTO] TAChart con assi indipendenti
Inserito da: fr33d0m - Aprile 09, 2026, 01:48:15 pm
Ciao a tutti,
sto provando a rappresentare tre serie di dati in un unico TAChart su 3 LineSeries e per ognuna vorrei il proprio asse Y dedicato (LeftAxis) e con la propria scala ma un unico asse X (BottomAxis) in comune tra tutte. Sono riuscito a creare i 3 assi Y assegnandoli alle 3 serie ma non capisco come renderli indipendenti con la scala. Mi sembra di aver capito che si debano utilizzare gli Axis Tranformation ma non ho capito come, inoltre l'asse delle X non è allineato tra le 3 serie.
Qualcuno ha mai avuto l'esigenza di fare qualcosa del genere?
Grazie.
Titolo: Re:TAChart con assi indipendenti
Inserito da: DragoRosso - Aprile 09, 2026, 02:29:52 pm
Uhmm ... penso che tu debba creare 2 "subaxis" aggiuntivi dell'asse Y.

Non sò però se TChart è uguale a quello di Delphi.

Titolo: Re:TAChart con assi indipendenti
Inserito da: fr33d0m - Aprile 09, 2026, 04:33:52 pm
Ho provato anche in Delphi, sia con SubAxis che creando CustomAxis ma non riesco a fare quello che voglio. Proprio non riesco a capire come legare un asse ad una serie e allinearli sull'asse X (BottomAxis).
Titolo: Re:TAChart con assi indipendenti
Inserito da: DragoRosso - Aprile 09, 2026, 06:34:23 pm
Devi aggiungere un CustomAxis e abbinarlo alla serie (a runtime o nell'object inspector o nello chart edit).

L'asse 2 è abbinato alla serie verde che incomincia (solo per leggibilità) a X 50

L'asse "bottom" ossia l'orrizontale è automaticamente agganciato a tutte le serie, sempre che non aggiunge anche li un custom e lo abbini alle serie che vuoi.

Tieni presente che solo nell'ultima versione si posso aggiungere quanti customaxis vuoi, prima mi pare fossero limitati.
Titolo: Re:TAChart con assi indipendenti
Inserito da: fr33d0m - Aprile 13, 2026, 03:24:22 pm
Ok, finalmente in Delphi sono riuscito a raggiungere il risultato desiderato. Il problema è che mi interessava farlo anche con il componente TChart di Lazarus e non riesco a rendere indipendenti gli assi.
Quando creo altri LeftAxis sembra che rimangano legati in qualche modo al LeftAxis principale creato di default e prendano gli stessi valori di scala.
Qualche idea?
Titolo: Re:TAChart con assi indipendenti
Inserito da: DragoRosso - Aprile 13, 2026, 06:20:58 pm
Succintamente, è questo che vuoi ottenere in Lazarus ?

Se si per ogni asse verticale usa la proprietà "group". Poi nelle serie definisci come in Delphi l'appartenenza agli assi.

Non settare i valori minimi / massimi degli assi perchè (probabilmente è un baco) in questo caso tutti gli assi avranno il minimo / massimo come range più largo impostato.
Titolo: Re:TAChart con assi indipendenti
Inserito da: fr33d0m - Aprile 15, 2026, 03:47:21 pm
Alla fine ce l'ho fatta a risolvere.
I passi sono:
- Creazione delle 3 serie;
- Creazione di 2 LeftAxis aggiuntivi; (il primo è creato di default)
- Assegnazione degli assi alle serie (ogni serie ha il suo LeftAxis);
- Creazione di 3 oggetti AxisTransformation creando un nuovo item AutoScaleAxisTransf ciascuno;
- Assegnazione dei Transformation agli assi (ogni asse il suo Transformation);
- Ad ogni asse impostare i valori di Range.Max e Range.Min uguali ma opposti (es. 100 e -100) con i valori di scala che vogliamo visualizzare; (questo serve per allineare lo zero su tutte le serie)
- Ad ogni asse impostare Range.UseMax e Range.UseMin a "true";

Grazie a tutti.