TChart 未使用水平轴标签的 X 参数

问题描述 投票:0回答:1

我正在使用 Delphi 11 VCL TChart 创建图表。水平轴不考虑 X 值。条形图和标签均未位于预期位置。我这里有完整的代码。 Output with TitleOutput without title 。 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;

delphi teechart
1个回答
0
投票

您的代码过于复杂,并且添加了太多系列。针对放置在表单上的空 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;

© www.soinside.com 2019 - 2024. All rights reserved.