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有任何的問題或者想要諮詢的均可以在評論下方留言。

相關文章
相關標籤/搜索