AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TChart: zu viele X-Achs-Labels

Ein Thema von killamac · begonnen am 4. Feb 2015 · letzter Beitrag vom 5. Feb 2015
Antwort Antwort
killamac

Registriert seit: 29. Jan 2014
2 Beiträge
 
#1

TChart: zu viele X-Achs-Labels

  Alt 4. Feb 2015, 17:54
Hallo Miteinander,

das Problem mit den überlappenden X-Achs Labels tauchte schon öfter mal auf, eine Lösung
für mein Problem hatte ich bisher noch nicht entdeckt, daher folgende Fragen:

1. Ist es möglich, bei einzelnen Serien zu unterbinden, ihre X-Labels in die Labels der Bottom Achse
zu schreiben. Wenn dies passiert, überlappen die Labels massiv, sodaß sie nicht mehr zu lesen sind.

2. Ich hatte bereits versucht, die X-Achs Labels mit dem GetAxisLabel-Event zu verändern. Dort gibt es
einen Parameter ValueIndex, der den jeweiligen Index der Labels representieren soll. Ich habe Testweise den
ValueIndex als Label auszugeben. Das Funktioniert zwar, allerdings tauchen manche Index-Nummern mehrfach auf,
was natürlich quatsch ist!
Damit könnte man normalerweise manche Labels weglassen, damit sie sich nicht überlappen.
Mit doppelt vorkommenden Indizes macht das nicht allzuviel Sinn, oder?
Beim Debuggen hat der ValueIndex-Parameter immer den Wert -1. Lasse ich es durchlaufen, wird statt -1
tatsächlich ein Index ausgegeben, aber wie schon gesagt, manchmal doppelt.
Sehr merkwürdig.

Hat jemand eine Idee, wie ich die Labels lesbar bekomme?
Miniaturansicht angehängter Grafiken
x-achslabels-ueberlappen.png  
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: TChart: zu viele X-Achs-Labels

  Alt 4. Feb 2015, 18:08
Hallo-

Kannst du einmal angeben welche Delphi / TeeChart-Version im Einsatz ist?

Ansonsten ist das was du darstellst nicht das Standard-Verhalten was Achsenbeschriftungen angeht. Unter Bottom Axis -> Labels -> Style hast du Style = Mark (oder "Point Value") eingestellt, richtig? Normal steht das auf Auto: Dann wird die Achse regelmäßig beschriftet.

Wenn du die Achse explizit nur dort beschriften wo Werte eingetragen wurden gibt es, soweit ich weiß, keinen Automatismus der für dich entscheiden kann welches Label du jetzt setzen möchtest oder nicht.
Ich würde die Achse regelmäßig beschriften und bei interessanten Punkten dynamisch Zusatzinformationen einblenden (wie XY-Koordinaten) wenn man z.B. mit der Maus draufklickt.


PS: Siehe auch: http://www.teechart.net/support/view...php?f=3&t=4118
Miniaturansicht angehängter Grafiken
2015-02-04_18-07-13.png   2015-02-04_18-07-31.png  

Geändert von Der schöne Günther ( 4. Feb 2015 um 18:15 Uhr) Grund: Neu: Jetzt mit Bildern!
  Mit Zitat antworten Zitat
killamac

Registriert seit: 29. Jan 2014
2 Beiträge
 
#3

AW: TChart: zu viele X-Achs-Labels

  Alt 5. Feb 2015, 10:41
Hallo schöner Gunter,

ich benutze die zu Delphi XE5 mitgelieferte Version bzw. das aktuelle (so hoffe ich doch) Update.

Sie heisst: TeeChart Lite 2014 for RAD XE5 Update 2.

Der Style ist auf "Point Value" eingestellt. Bei Marks passiert das gleiche, allerdings mit der laufenden Nummer der Punkte. Optimal gefiele mir meine Variante ohne die Überlappungen

Wie sieht es mit dem Löschen der Label Texte der Serie vor dem hinzufügen zum Chart aus?
Bei mir gibt es genau dann die Überlappung, wenn die zusätzlichen Serien der Pfeile eingetragen werden.

Kann ich nicht irgendwie unterbinden, das eine Serie Labels in die X-Achse eintragen will?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TChart: zu viele X-Achs-Labels

  Alt 5. Feb 2015, 11:20
Kann ich nicht irgendwie unterbinden, das eine Serie Labels in die X-Achse eintragen will?
Eine komfortable Möglichkeit ohne Code sehe ich keine. Du kannst aber, wie du selbst schon gesagt hast, dein OnGetAxisLabel-Event nehmen und sagen "Series2 soll nichts auf BottomAxis eintragen!"

Delphi-Quellcode:
procedure TForm7.Chart1GetAxisLabel(
   Sender: TChartAxis;
   Series: TChartSeries;
   ValueIndex: Integer;
   var LabelText: string
);
begin
   if (Sender = Chart1.BottomAxis) and (Series = Series2) then
      LabelText := EmptyStr;
end;
Miniaturansicht angehängter Grafiken
2015-02-05_11-16-36.png   2015-02-05_11-16-49.png  
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz