TeeChart Pro VCL/FMX教程(四):轴控制(上)

下载TeeChart Pro VCL/FMX最新版本

TeeChart Pro将自动为您定义所有Axis标签,并提供足够的灵活性来定制您可能具有的任何特定要求。TeeChart Pro提供真正的多轴。这些可在设计或运行时使用,并为Axis定义提供无数可能性和灵活性。

轴控制 - 关键领域

Series

将Series数据添加到Chart时,会自动设置轴刻度。您可以使用Axis属性在设计时或运行时更改默认值。

TeeChart Pro VCL/FMX教程(四):轴控制(上)

自动选择最佳轴刻度范围以适合您的数据。如果关闭“Automatic”,则“Scales”部分将**选项,您可以更改“axis”值。重要的是,请记住从页面左侧的“Axis”菜单中选择要配置的轴。

将行系列添加到图表中添加一个命令按钮,其中包含以下代码:

procedure TForm1.BitBtn1Click(Sender: TObject);
var t: Integer;
begin
 For t := 0 To 40 do
   With Series1 do
   begin
     Add(Int(Random(t)), '', clRed);
   end;
end;

在按钮中运行代码将绘制一个包含40个随机值的Line Series。

TeeChart Pro VCL/FMX教程(四):轴控制(上)

在设计时转到图表编辑器。在Axis页面的Bottom Axis scales部分中关闭Automatic'off'。您现在可以配置轴刻度的最大值和最小值。再次运行代码将显示值,具体取决于您为Axis配置的值。使用鼠标右键可以滚动查看剩余值。

按代码设置轴刻度

您可以使用以下代码在运行时更改最大值和最小值:

With Chart1.Axes.Bottom do
begin
  Automatic := False;
  Maximum := 36;
  Minimum ;= 5;
end;

TeeChart Pro VCL/FMX教程(四):轴控制(上)

您可以将Axis scale Maximum和Minimum设置为自动单独。例如:

With Chart1.Axes.Bottom do
begin
  AutomaticMaximum := True;
  Minimum := 5;
end;

Increment

您可以定制Axis的间隔。从Axis页面的Scales部分选择Desired Increment组合框,并添加所需的增量。您可以在运行时通过代码更改它:

Chart1.Axes.Bottom.Increment := 20;

日期时间数据

如果您的数据是日期时间(您可以通过转到“系列”,“常规”页面将数据设置为系列的日期时间),“图表”,“轴”页面和“比例”部分将显示日期时间范围。从Desired Increment组合框中显示的范围中选择 。

添加一些示例数据

for t := 1 To 25 do
    Series1.AddXY(EncodeDate(1998, 4, t), Random(t), '', clRed);

在运行时更改增量:

 Chart1.Axes.Bottom.Increment := DateTimeStep[dtOneWeek];

Title

标题在Axis页面的标题部分设置。您可以更改Axis及其字体的标题文本。角度可以从值0,90,180,270度中选择。有关运行时,请参阅TChartAxisTitle组件。

Labels

注意:

更改轴标签频率时,请记住TeeChart将根据LabelsSeparation属性的设置避免标签重叠。这意味着如果标签频率太高而不适合标签,那么TeeChart将分配“最佳匹配”。更改标签角度和标签分离是2个选项,可帮助您安装所需的标签。请参阅标签部分和LabelsAngle属性。

标签格式

您可以将所有标准数字和日期格式应用于Axis标签。“轴”页面的“标签”部分包含“值格式”字段。如果您的数据是datetime,则字段名称将更改为“Date time format”。在编辑器中拖动帮助“?” 在该字段上的图标,以获得完整的选项列表。在运行时使用:

Chart1.Axes.Bottom.AxisValuesFormat := '#,##0.00;(#,##0.00)';
//or for Datetime data
Chart1.Axes.Bottom.DateTimeFormat := 'dd/mmm/yy hh:mm:ss';

MultiLine标签

Axis标签可以显示为多行文本而不是单行文本。使用TeeLineSeparator全局常量分隔行,该常量默认为回车符ascii字符(#13)。

//Add the Series labels in this way and apply 'Marks' as Axis labelling style

Series1.Add( 1234, 'New'+TeeLineSeparator+'cars' , clRed );
Series1.Add( 2000, 'Old'+TeeLineSeparator+'bicycles' , clBlue );

DateTime标签的示例:

以下将在两行文本中显示底轴标签,一行显示月份和日期,第二行显示年份:Feb-28 Mar-1 .. 1998 1998 ..

Series1.AddXY( EncodeDate( 1998,2,28 ), 100 );
Series1.AddXY( EncodeDate( 1998,3,1 ), 200 );
Series1.AddXY( EncodeDate( 1998,3,2 ), 150 );

Series1.XValues.DateTime := True;

Chart1.Axes.Bottom.DateTimeFormat := 'mm/dd hh:mm';   { <-- space }

如果将LabelsMultiLine属性设置为True,则轴将自动将标签拆分为找到空格的单独行。

Chart1.Axes.Bottom.LabelsMultiLine:=True;

将标签分为两部分:

'mm / dd'代表第二行
'hh:mm'代表第二行

在运行时,您始终可以使用OnGetAxisLabel事件以编程方式将标签拆分为行:

procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
var s:string;
begin
    s:='abc'+TeeLineSeparator+'def';
    LabelText:=ReplaceChar(s,' ',TeeLineSeparator);
end;

轴LabelsAngle属性(标度旋转角度为0度,90度,180度或270度)也可用于多线轴标签。

自定义轴标签

可以使用Axis事件获得更多标签控件。事件允许您**/停用/更改任何单个Axis标签。以下示例修改每个Label,将文本短语放在点索引值的前面。

//set LabelStyle to 'Mark' with the TChart editor or use:-
Chart1.Axes.Bottom.LabelsStyle := talMark;

//OnGetaxisLabel event
procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
 if Sender = Chart1.Axes.Bottom then
    LabelText := 'Period ' + IntToStr(ValueIndex);
end;

Ticks

TeeChart Pro VCL/FMX教程(四):轴控制(上)

有3种刻度类型。您可以更改每种刻度类型的长度,宽度和颜色。如果刻度线宽度设置为1(默认值),则可以将样式更改为多种线型之一(点,短划线等)。如果width大于1,则将忽略样式。

With Chart1.Axes.Bottom do
Begin
  TickLength := 7;
  Ticks.Color := clGreen;
  MinorTickCount := 10; //change number of minorticks between (major) Ticks
end;

轴位置

轴具有修改每个轴所在位置的属性。在此示例中,轴移动到图表总宽度的50%,因此它显示在图表中心:

Chart1.Axes.Left.PositionPercent := 50 ;

查看Teechart.Net系列教程>>