TeeChart Pro VCL/FMX教程(四):轴控制(上)
TeeChart Pro将自动为您定义所有Axis标签,并提供足够的灵活性来定制您可能具有的任何特定要求。TeeChart Pro提供真正的多轴。这些可在设计或运行时使用,并为Axis定义提供无数可能性和灵活性。
轴控制 - 关键领域
Series
将Series数据添加到Chart时,会自动设置轴刻度。您可以使用Axis属性在设计时或运行时更改默认值。
自动选择最佳轴刻度范围以适合您的数据。如果关闭“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。
在设计时转到图表编辑器。在Axis页面的Bottom Axis scales部分中关闭Automatic'off'。您现在可以配置轴刻度的最大值和最小值。再次运行代码将显示值,具体取决于您为Axis配置的值。使用鼠标右键可以滚动查看剩余值。
按代码设置轴刻度
您可以使用以下代码在运行时更改最大值和最小值:
With Chart1.Axes.Bottom do begin Automatic := False; Maximum := 36; Minimum ;= 5; end;
您可以将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
有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 ;