TeeChart Pro VCL/FMX函数的运用方法

    TeeChart Pro VCL/FMX是一款主流的图表制做工具。提供了数百种用于可视化的2D、3D图形样式、56种数学、统计和金融函数,以及不限数量的坐标轴和30种调色板组件。相信不少的人都会在制做图表时的选择这个工具,可是对它的使用却不太了解,本文章就是一个比较新手的教程了,后期也会持续更新,想了解的也能够多多关注。编程

                               点击下载TeeChart Pro VCL/FMX最新试用版bash

Function Period 编辑器

Period是使用函数的重要属性,由于Period定义了循环应用Function的点的范围
函数

  • 咱们有6个数据点(例如Bar系列的条形图),其值为: 3,8,6,2,9和12。工具

  • 定义一个具备周期0的函数系列(默认),绘制的平均值为: 6.667。 oop

  • 将Period设置为2,咱们获得3个平均值做为函数的输出: 5.5,4和10.5。 ui

  • 这些值将在其周期范围内集中绘制,输入系列中第1和第2栏之间的第1个值,第3和第4栏之间的第2个值,依次类推。 spa

  • 您能够经过在图表编辑器中选择函数来定义Period,也能够在FunctionType运行时修改Period。code

示例:系列2是功能系列:cdn

Series2.FunctionType.Period:=2;复制代码

如下是2张图表,突出显示应用期间的效果 :

Period0.gifPeriod2.gif


当函数Period大于零(它按点组计算)时,函数结果默认在函数周期的center位置添加到系列中,PeriodAlign属性将会控制where以在整个期间内放置函数计算。

TeeFunction1.PeriodAlign := paCenter ; { <-- by default it is centered }复制代码

paFirst和paLast常量将在每一个Period的开始和结束的X坐标处绘制计算。 每一个蓝点显示使用该月第一天和最后一天之间全部点的平均值。

PeriodAlign = paLast

从下图中能够看出,平均值是在月底绘制的:

periodal1.jpg

PeriodAlign = paFirst

这种状况下,平均值就是在月初绘制的:

periodal2.jpg

Deriving custom functions (VCL only)

建立一个新的Function组件只是建立一个从TTeeFunction派生的新组件(它也能够从现有函数派生)。 在TTeeFunction中有两个重要的虚拟方法能够被覆盖用以建立新的Function类型:

  • 函数TTeeFunction.Calculate(SourceSeries:TChartSeries; First,Last:Longint):Double;

  • 函数TTeeFunction.CalculateMany(SourceSeriesList:TList; ValueIndex:Longint):Double;

若是只有一个系列是数据源,则Calculate方法用于计算函数结果,若是多个系列是数据源,则CalculateMany用于计算函数结果。

示例:建立新的TMyFunction

TMyFunction返回平方和

type TMyFunction = class( TTeeFunction ) end;复制代码

此函数只能有一个数据源或多个数据源,所以咱们将覆盖Calculate和CalculateMany方法。

咱们将用覆盖TMyFunction的Calculate方法来作一件很是简单的事情。 Calculate方法以下所示:

Function TMyFunction.Calculate(SourceSeries:TChartSeries; First,Last:Integer):Double;Var StartPoint, EndPoint, t : Integer;begin  StartPoint:=0;  EndPoint:=SourceSeries.Count-1;  if First <> -1 then StartPoint:=First;  if Last <> -1 then EndPoint:=Last;  Result:=0;  for t:=StartPoint to EndPoint do      Result:= Result + Sqr(SourceSeries.MandatoryValueList[t]);end;复制代码

StartPoint和EndPoint变量用于loop全部的SourceSeries点以计算平方和。

使用MandatoryValueList属性代替YValues属性只是为了使此函数与HorizBarSeries等系列类型一块儿使用,其中是XValues保存点值而不是YValues。

若是只有一个系列是数据源,则Calculate方法用于计算函数结果,若是多个系列是数据源,则CalculateMany用于计算函数结果。

覆盖TMyFunction的CalculateMany方法以容许TMyFunction与具备多个系列做为数据源的系列一块儿使用。 以编程的方式,一个系列能够添加为其余系列的数据源。

Function TMyFunction.CalculateMany(SourceSeriesList:TList;                                   ValueIndex: Integer):Double;var t : Integer;begin  Result:=0 ;  for t:= 0 to SourceSeriesList.Count -1 do      Result := Result + sqr(TChartSeries(SourceSeriesList[t]).MandatoryValueList[ValueIndex]);end;复制代码

CalculateMany被源系列中的每一个点调用一次,从零开始,再以全部数据源的最小点数结束。

重点!!!理解Calculate和CalculateMany之间的区别很是重要。 当只有一个数据源而且只调用一次时调用Calculate。 当有多个Series做为数据源时,会屡次调用CalculateMany(每一个点一个)。

若是对于TeeChart Pro VCL/FMX有任何的问题或者想要咨询的均可以在评论下方留言。

相关文章
相关标签/搜索