![]() |
TChart "Gestapelte Säulen"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich muss mich gerade ein bisschen mit TChart rumschlagen und möchte ein Diagramm mit gestapelten Säulen erstellen. Geht das? Und wenn ja, wie? Ich hab mal ein Bild angehangen wie das werden soll. Es soll dargestellt werden wieviele Einheiten eines Materials in einem bestimmten Zeitraum für ein Produkt aufgewendet worden ist. Die Werte sind alle da und richtig, ich weis jetzt nur nicht wie ich die in das Chart bekommen soll. Über den Designer kann ich das nicht machen, da man zwischen verschiedenen Auswertungen wählen kann und dann je nach Auswahl unterschiedliche Diagramme erzeugt werden müssen. Ich hoffe ihr könnt mir helfen, vielen Dank schonmal. |
Re: TChart "Gestapelte Säulen"
hi,
wenn ich es richtig verstanden habe dann würde ich je nach material eine eigene bar-series benutzen die kannst du ja dann hintereinander zeichnen lassen mit unterschiedlichen farben - sollte kein problem sein -> also bei 3 Materialien = 3 Bar Series dann erste zeichnen, dann zweite dann dritte ... wenn du die y-werte aufrechnest kannst du ja zum max_y der erste series den wert der zweiten dazu addieren usw. denn solltest du das ganze auch gestaffelt hinbekommen cya |
Re: TChart "Gestapelte Säulen"
Ok, ich werd das mal ausprobieren, danke :thumb:
|
Re: TChart "Gestapelte Säulen"
Hier, aus dem Demo zu TChart, Auswahl der darstellung mit einer Radiogroup:
Delphi-Quellcode:
So wie Du es haben willst, ist es mbStacked. :thumb:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin { Four ways to plot bar Series: } Case RadioGroup1.ItemIndex of 0: LineSeries1.MultiBar:=mbNone; 1: LineSeries1.MultiBar:=mbSide; 2: LineSeries1.MultiBar:=mbStacked; 3: LineSeries1.MultiBar:=mbStacked100; end; end; Die LineSeries lass ich mir per Quelltext füllen, etwa so:
Delphi-Quellcode:
for k := 0 to RecCount -1 do
begin Value := Irgendein Integer-Wert LineSeries1.AddY(Value, Irgendein Datum, clRed); end; for l := 0 to RecCount -1 do begin Value := Irgendein anderer Integer-Wert LineSeries2.AddY(Value, Irgendein Datum, clGreen); end; |
Re: TChart "Gestapelte Säulen"
Guten Morgen,
also ich habe etwas sehr ähnliches vor. Genauer gesagt möchte ich ein Balkendiagramm mit horzontal verlaufenden Balken darstellen, die wie oben erwähnt gestückelt/gestapelt sind. Habe mir über die Toolpalette ein Chart aufs Form gezogen das soweit auch funktioniert, doch leider komme ich mit dem Codeschnipsel unten nicht ganz zurecht.
Delphi-Quellcode:
wird jedenfalls so nicht erkannt.
LineSeries1.MultiBar:=mbStacked;
|
Re: TChart "Gestapelte Säulen"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
also ich hatte das mal so gelöst, dass ich 2 Series erzeugt, beiden den gleich x-Wert zugewiesen und einem der beiden Balken die Summe aus beiden y-Werten zugewiesen hatte (das ganze lief über ne DB, also nicht wegen dem Query wundern):
Delphi-Quellcode:
MFG
with DBCPuni_dbchart do
Begin Series[0].Title :='roter Anteil' ; Series[0].SeriesColor :=clred ; Series[0].ValueFormat:='Wert1 1'; Series[0].AddY((ZQuery1.fieldbyname('k').AsFloat+ ZQuery1.fieldbyname('x').AsFloat), formatdatetime('mm-yy',ZQuery1.fieldbyname('Datum').AsDateTime), (clred)); Series[1].Title :='grüner Anteil' ; Series[1].SeriesColor :=clgreen ; Series[1].ValueFormat:='Wert 2'; Series[1].AddY((ZQuery1.fieldbyname('x').AsFloat), formatdatetime('mm',ZQuery1.fieldbyname('Datum').AsDateTime), (clgreen)); end; Steffen |
Re: TChart "Gestapelte Säulen"
Also irgendwo steh ich noch auf dem Schlauch. Bin ein wenig irritiert wo genau die Grenzen sein sollen.
Hier habe ich den unteren Teil des Balkens
Delphi-Quellcode:
und hier den Aufsatz
Series[1].AddY((ZQuery1.fieldbyname('x').AsFloat),
formatdatetime('mm',ZQuery1.fieldbyname('Datum').AsDateTime), (clgreen));
Delphi-Quellcode:
Weiß jetzt nicht genau wie ich das auf meine Daten übertrage. Möchte auf der x-Achse die Zeit auftragen und auf der Y-Achse sollen der Reihe nach die gestapelten Balken konstruiert werden. Leider funktioniert das noch nicht so richtig.
Series[0].AddY((ZQuery1.fieldbyname('k').AsFloat+
ZQuery1.fieldbyname('x').AsFloat), formatdatetime('mm-yy',ZQuery1.fieldbyname('Datum').AsDateTime), (clred)); normalerweise sollte doch folgendes genügen
Delphi-Quellcode:
normalerweise sollte doch
Series[0].AddY(Zeit1,'Balken1',clred);
Delphi-Quellcode:
Aber irgendwie kommt bei mir nur Gulasch dabei rum.
Series[1].AddY(Zeit1 + Zeit2,'Balken1',clgreen);
|
Re: TChart "Gestapelte Säulen"
Ich bin nicht sicher, ob es zwischen einem TChart und einem TDBChart diesbezüglich Unterschiede gibt.
Weißt du vorher, wieviele Balken gestapelt werden sollen? Die Grenzen legst du mit der Eigenschaft Maximum fest..bei deinem Beispiel also:
Delphi-Quellcode:
DBCPuni_dbchart.LeftAxis.Maximum:=zeil1+tzeit2+Platz_nach_oben;
Zeig doch ggf. mal einen Screenshot MFG Steffen |
Re: TChart "Gestapelte Säulen"
Also ich habs jetzt mal spasshalber auf vertikale Balken gestellt und jetzt scheint es zu funktionieren. Scheinbar muss man da noch etwas beachten wenn man die Balken horizontal darstellen möchte. Könntest du evtl. mal bei gelegenheit probieren ob eine solche Umschaltung bei dir funktioniert?
|
Re: TChart "Gestapelte Säulen"
Ahhhhh, wenn du deine Balken horizontal darstellen willst, geht mein Beispiel natürlich nicht (das war für vertikale Darstellung).Versuche mal die Zuordnung zur Balken zu tauschen
also nicht
Delphi-Quellcode:
sondern
Series[0].AddY(Zeit1,'Balken1',clred);
Delphi-Quellcode:
MFG
Series[0].AddY('Balken1',Zeit1,clred);
Steffen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz