我正在使用 Delphi 11 VCL TChart 创建图表。水平轴不考虑 X 值。条形图和标签均未位于预期位置。我这里有完整的代码。 。 。 TChart 已简单地放在 Form1 上,没有进行任何调整。
procedure TForm1.FormShow(Sender: TObject);
procedure AddOneDay(nDay,nVal1,nVal2,nVal3:Integer;wTitle:String) ;
var
SuccessSeries: TBarSeries;
AlertsSeries: TBarSeries;
ErrorsSeries: TBarSeries;
begin
SuccessSeries:=TBarSeries.Create(FChart);
AlertsSeries:=TBarSeries.Create(FChart);
ErrorsSeries:=TBarSeries.Create(FChart);
SuccessSeries.ParentChart:=FChart ;
AlertsSeries.ParentChart:=FChart ;
ErrorsSeries.ParentChart:=FChart ;
SuccessSeries.BarStyle := bsRectGradient;
AlertsSeries.BarStyle := bsRectGradient;
ErrorsSeries.BarStyle := bsRectGradient;
SuccessSeries.Marks.Visible := False;
AlertsSeries.Marks.Visible := False;
ErrorsSeries.Marks.Visible := False;
if nDay<>1 then
begin // Need just one set of Legends
SuccessSeries.Legend.Visible:=False;
AlertsSeries.Legend.Visible:=False;
ErrorsSeries.Legend.Visible:=False;
end
else
begin
SuccessSeries.Legend.Text:='Errors' ;
AlertsSeries.Legend.Text:='Alerts' ;
ErrorsSeries.Legend.Text:='Success' ;
end;
SuccessSeries.StackGroup:=nDay ;
AlertsSeries.StackGroup:=nDay ;
ErrorsSeries.StackGroup:=nDay ;
SuccessSeries.Transparency:=30 ;
AlertsSeries.Transparency:=30 ;
ErrorsSeries.Transparency:=30 ;
// SuccessSeries.AddXY((nDay-1)*10,nVal1,wTitle,$00615CFC);
// AlertsSeries.AddXy((nDay-1)*10,nVal2,wTitle,$00ECC2AA);
// ErrorsSeries.AddXy((nDay-1)*10,nVal3,wTitle,$0086F76F);
SuccessSeries.AddXY((nDay-1)*10,nVal1,'',$00615CFC);
AlertsSeries.AddXy((nDay-1)*10,nVal2,'',$00ECC2AA);
ErrorsSeries.AddXy((nDay-1)*10,nVal3,'',$0086F76F);
end;
begin
FChart.SeriesList.Clear;
with FChart.Title do
begin
Font.Size := 15 ;
Font.Color := clBlack;
Text.Text:='Performance Chart';
end;
AddOneDay(1,10,20,30,'Day-1');
AddOneDay(2,10,20,30,'Day-2');
AddOneDay(3,10,20,30,'Day-3');
AddOneDay(4,10,20,30,'Day-4');
AddOneDay(5,10,20,30,'Day-5');
AddOneDay(6,10,20,30,'Day-6');
AddOneDay(7,10,20,30,'Day-7');
end;
您的代码过于复杂,并且添加了太多系列。针对放置在表单上的空 TChart 运行以下代码。 X 轴标签将是由
.Add
传入的文本。
过程 TForm1.Button1Click(发件人: TObject);
begin
TBarSeries.create(Chart1);
Chart1.AddSeries(TBarSeries.create(Chart1));
Chart1.Series[0].Add(10,'Day-1');
Chart1.Series[1].Add(20,'Day-1');
Chart1.Series[0].Add(15,'Day-2');
Chart1.Series[1].Add(25,'Day-2');
end;