Hallo in das Forum,
ich lasse zur Laufzeit ein TChart mit einem "gestapelten" Balkendiagramm (TBarseries) erzeugen (was ich auch hinbekommen habe).
Was ich verzweifelt suche, ist, wie ich es hinbekomme, die den Werten zugeordneten Balken unterschiedlich einzufärben. Im Netz habe ich leider kein Beispiel dazu gefunden. Hat hier einer eine Lösung parat?
Viele Grüße
boeffi27
gestapeltes Balkendiagramm - Farbe?
Re: gestapeltes Balkendiagramm - Farbe?
Dazu braucht man eine ChartStyles-Komponente. Ich habe das ganze Procedere einmal in diesem Tutorial zusammengestellt: http://wiki.lazarus.freepascal.org/TACh ... _BarSeries
Re: gestapeltes Balkendiagramm - Farbe?
Hallo wp_xyz,
vielen Dank für den Link.
Im Prinzip habe ich es nun verstanden, wie es geht.
Jetzt fehlt mir nur noch der Code, wie ich das Chart zur Laufzeit mit dem TChartStyle einfärbe und verlinke.
Ich komme an dieser Stelle gerade nicht weiter.
Viele Grüße
boeffi27
vielen Dank für den Link.
Im Prinzip habe ich es nun verstanden, wie es geht.
Jetzt fehlt mir nur noch der Code, wie ich das Chart zur Laufzeit mit dem TChartStyle einfärbe und verlinke.
Ich komme an dieser Stelle gerade nicht weiter.
Viele Grüße
boeffi27
Re: gestapeltes Balkendiagramm - Farbe?
Ich geb zu, das ist ein kleiner "Knochen" zum Zähneausbeißen, aber so geht's (einfaches Formular mit einem Chart, sonst nichts weiteres):
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, TAGraph, TASources, Forms, Controls, Graphics,
Dialogs, TASeries, TAStyles;
type
{ TForm1 }
TForm1 = class(TForm)
Chart1: TChart;
procedure FormCreate(Sender: TObject);
private
{ private declarations }
StackedBarSeries: TBarSeries;
ChartStyles: TChartStyles;
procedure CreateStackedSeries;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses
TALegend;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateStackedSeries;
end;
procedure TForm1.CreateStackedSeries;
var
i: Integer;
x, y1, y2, y3: Double;
begin
// ChartStyles erzeugen
ChartStyles := TChartStyles.Create(self);
with TChartStyle(ChartStyles.Styles.Add) do begin // Für jeden Balken einen ChartStyle!
Brush.Color := clRed; // Farbe des untersten Balkens
Text := 'Red'; // Legendeneintrag des untersten Balkens
end;
with TChartStyle(ChartStyles.Styles.Add) do begin
Brush.Color := clBlue; // Farbe des mittleren Balkens
Text := 'Blue';
end;
with TChartStyle(ChartStyles.Styles.Add) do begin
Brush.Color :=clYellow; // Farbe des obersten Balkens
Text := 'Yellow';
end;
// Eine einzige BarSeries erzeugen (nicht drei!)
StackedBarSeries := TBarSeries.Create(self);
Chart1.AddSeries(StackedBarSeries);
StackedBarSeries.Styles := ChartStyles;
StackedBarSeries.Legend.Multiplicity := lmStyle;
// Daten einfügen: wir haben 3 Balken, also braucht die Series 3 y-Werte!
StackedBarSeries.ListSource.YCount := 3;
for i:=0 to 5 do
begin
x := i;
y1 := Random; // Nehme hier als Beispiel nur Zufallszahlen...
y2 := Random;
y3 := Random;
StackedBarSeries.ListSource.AddXYList(x, [y1,y2,y3]);
// So ist es etwas leichter zu lesen als beim "Standard-AddXY:
// StackedBarSeries.AddXY(x, y1, [y2,y3]);
end;
// Legende einschalten
Chart1.Legend.Visible := true;
end;
Re: gestapeltes Balkendiagramm - Farbe? [gelöst]
Tausend Dank, ich habe es hinbekommen.
Selbst wäre ich aber nicht draufgekommen.
Gruß
boeffi27
Selbst wäre ich aber nicht draufgekommen.
Gruß
boeffi27