TaChart Achsenbeschriftung als "integer" Zahlen..

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1665
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von corpsman »

Sers,
wieh hier bereits gestartet bastle ich mal wieder mit TaChart herum.

Dieses mal versuche ich die Beschriftung der Achsen auf "Ganze" Zahlen zu setzen.

Dazu habe ich die Option aipInteger (TChartAxis.Intervals.Options) gesetzt. Das funktioniert bei der x-Achse perfekt, bei der Y-Achse komischerweise nur Manchmal :/
Bargraphissue.png
Bargraphissue.png (50.3 KiB) 1655 mal betrachtet
Jemand ne Idee wie ich das hin bekomme ?
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1665
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von corpsman »

Ok, so gehts:

Code: Alles auswählen

Procedure TForm1.Chart1AxisList0MarkToText(Var AText: String; AMark: Double);
Begin
  AText := inttostr(round(max(0, AMark)));
End; 
Aber so "richtig" fühlt sich das nicht an ...
--
Just try it

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

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von wp_xyz »

Muss ich mir mal genauer ansehen, aber fürs erste ist eine Abhilfe, zusätzlich auch die Intervals.Option aipCount zu setzen (zusammen mit allen anderen Options, außer aipGraphCoords).

[EDIT]
Nein, vergiss das. Ich habe den Fehler inzwischen gefunden und in Laz/main behoben. Falls du eine Release Version verwendest, kannst du das mit einer Zeile selbst fixen:

Öffne Unit TACustomSource, suche procedure TIntervalChartSource.CalculateIntervals(). Füge vor der Zeile "if aipUseNiceSteps in Params.Options" die Zeile "bestCount := 0" ein:

Code: Alles auswählen

procedure TIntervalChartSource.CalculateIntervals(
  AParams: TValuesInRangeParams; out ABestStart, ABestStep: Double);
...
begin
  CalcMinMaxCount(minCount, maxCount);
  bestCount := 0;
  if aipInteger in Params.Options then begin
    ...
  end;
  bestCount := 0;  // <---- DIESE ZEILE EINFÜGEN
  if aipUseNiceSteps in Params.Options then begin  
  ...

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1665
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von corpsman »

*g*,
es freut mich dass meine Frage zu einer Verbesserung für alle geführt hat, da ich die head version nutze, werde ich einfach pullen und alles sollte funktionieren ;).
Danke fürs dran bleiben.
--
Just try it

artelogic
Beiträge: 19
Registriert: Mi 20. Apr 2022, 12:42

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von artelogic »

Eine TAChart-Version zu erstellen, die mit Integer (statt Double) arbeitet, ist wahrscheinlich relativ aufwendig, oder?

Hintergrund: Fließkomma ist auf ARM super langsam. Ein Chart auf nem Raspi kann man dem User eigentlich nicht zumuten.
Bin natürlich auch für andere Lösungen offen.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7006
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von af0815 »

artelogic hat geschrieben: Di 18. Nov 2025, 19:59 Eine TAChart-Version zu erstellen, die mit Integer (statt Double) arbeitet, ist wahrscheinlich relativ aufwendig, oder?

Hintergrund: Fließkomma ist auf ARM super langsam. Ein Chart auf nem Raspi kann man dem User eigentlich nicht zumuten.
Bin natürlich auch für andere Lösungen offen.
Ist mir auf den RasPi's noch nicht wirklich aufgefallen. Hängt wahrscheinlich von den Grafiken und dem Refresh ab. Ich konte es bisher den industirellen Benutzern schon zumuten. Ist aber auch ein wenig ein Designproblem und wie signifikant die Daten in einem gewissen Interval sind. Minütliche Daten brauche ich nicht schneller refreshen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

artelogic
Beiträge: 19
Registriert: Mi 20. Apr 2022, 12:42

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von artelogic »

Geht dabei (in meinem Fall) noch gar nicht um Daten. Ich hab ein leeres Chart auf einem TTabSheet eines TPageControl. Vollbild bei HD. Allein der Wechsel des Sheets dauert mehrere Sekunden. Ohne Daten im Chart. Mit Daten hab ich es gar nicht probiert. Liegt an den Axis des Charts. Wenn ich die invisible mache, ist der Wechsel wie gewohnt.
Wenn der Chart deutlich kleiner wird (zB 100x100), geht es auch schnell. Keine Ahnung, bei welcher Größe es anfängt, keinen Spaß mehr zu machen. Aber ich brauch eh Vollbild.

artelogic
Beiträge: 19
Registriert: Mi 20. Apr 2022, 12:42

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von artelogic »

Da ich wahrscheinlich nicht mit der aktuellen Version unterwegs bin: Wo finde ich die?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7006
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von af0815 »

Grundlegend einmal Infos dazu hier. https://wiki.freepascal.org/
Manche bevorzugen fpcupdeluxe. https://wiki.freepascal.org/fpcupdeluxe und https://github.com/LongDirtyAnimAlf/fpc ... e/releases

Je nach BS gibt es verschiedene Wege Lazarus und Freepascal zu installieren, hängt auch davon ab, welche Version man haben will und ob man verschiedene Versionen Seite an Seite installieren will. (Ich habe hier aktuell 5 Versionen installiert)

Dazu kommt, das die Komponenten wie TaChart doch öfters updates bekommen , als die Lazarus Versionen, dann sollte man sich die Quellen selbst besorgen. Beim FPC schauts sowieso mit Releases aktuell noch schlecht aus. Das wird noch dauern.

Es ist die Frage was man sich vom Update erhofft. Verschlimmbesserung ? Das die eigenen Designfehler verschwinden ? Wunder kann man nicht erwarten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von wp_xyz »

Bin zwar noch nicht 100% davon überzeugt, dass TAChart an deinem Problem die Schuld trägt (was ist sonst noch in dem Programm?), aber ich nehme mal an, deine Hypothese mit der Achsenbeschriftung ist richtig. Dann würde ich eine feste Achsenbeschriftung ausprobieren, also jeweils eine ListChartSource der Marks.Source-Property der Achsen zuweisen und in der ListChartSource die Werte für die Achenbeschriftung eintragen.

Eine Chart-Bibliothek basierend auf Integer-Arithmetik wäre eine komplette Neuentwicklung mit fraglichem Ausgang.

Vielleicht ist eine schlankere Bibliothek für deine spezielle Anwendung geeigneter: Im OPM gibt es einen "NiceChart" (https://wiki.freepascal.org/NiceChart), und mit Lazarus wird auch ein Package PlotFunction ausgeliefert, bei dem meine ich allerdings, dass das nur Funktionen plotten kann, keine Werte-Paare.

artelogic
Beiträge: 19
Registriert: Mi 20. Apr 2022, 12:42

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von artelogic »

Die Bezugsquellen für Lazarus und FPC sind durchaus interessant, aber eigentlich galt mein Interesse der der TAChart-Komponente. :wink:

NiceChart ist zu simple für meine Anwendung. Aber das mit der Source-Sache wirkt vielversprechend. Werd das später mal auf dem Raspi ausprobieren und dann berichten.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7006
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TaChart Achsenbeschriftung als "integer" Zahlen..

Beitrag von af0815 »

artelogic hat geschrieben: Mi 19. Nov 2025, 12:57 Da ich wahrscheinlich nicht mit der aktuellen Version unterwegs bin: Wo finde ich die?
Ist ein bischen missverständlich,
artelogic hat geschrieben: Mi 19. Nov 2025, 18:22 Die Bezugsquellen für Lazarus und FPC sind durchaus interessant, aber eigentlich galt mein Interesse der der TAChart-Komponente. :wink:
aber im main (Trunk) von Lazarus sollte immer der neueste Stand drinnen sein, deswegen hat es auch mit der Lazarusversion zu tun. Wobei viel von wp in den fixes Zweig rückportiert wird. Aber the bleeding edge ist nun mal der main Branch.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten