翻譯|使用教程|編輯:況魚杰|2019-07-10 12:00:58.087|閱讀 467 次
概述:TeeChart Pro功能是一個(gè)系列,幾乎可以是任何系列類型,可以是應(yīng)用代數(shù)函數(shù),也可以是數(shù)據(jù)源。所有函數(shù)都派生自TTeeFunction組件并繼承TeeFunction的Period屬性。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
TeeChart Pro VCL/FMX是一款主流的圖表制作工具。提供了數(shù)百種用于可視化的2D、3D圖形樣式、56種數(shù)學(xué)、統(tǒng)計(jì)和金融函數(shù),以及不限數(shù)量的坐標(biāo)軸和30種調(diào)色板組件。TeeChart Pro VCL/FMX教程將會(huì)以連載的形式持續(xù)為大家?guī)?lái)TeeChart Pro VCL/FMX的使用方法。
點(diǎn)擊下載TeeChart Pro VCL/FMX最新試用版
Function Period
Period是使用函數(shù)的重要屬性,因?yàn)镻eriod定義了循環(huán)應(yīng)用Function的點(diǎn)的范圍
我們有6個(gè)數(shù)據(jù)點(diǎn)(例如Bar系列的條形圖),其值為: 3,8,6,2,9和12。
定義一個(gè)具有周期0的函數(shù)系列(默認(rèn)),繪制的平均值為: 6.667。
將Period設(shè)置為2,我們得到3個(gè)平均值作為函數(shù)的輸出: 5.5,4和10.5。
這些值將在其周期范圍內(nèi)集中繪制,輸入系列中第1和第2欄之間的第1個(gè)值,第3和第4欄之間的第2個(gè)值,依次類推。
您可以通過(guò)在圖表編輯器中選擇函數(shù)來(lái)定義Period,也可以在FunctionType運(yùn)行時(shí)修改Period。
示例:系列2是功能系列:
Series2.FunctionType.Period:=2;
以下是2張圖表,突出顯示應(yīng)用期間的效果 :
當(dāng)函數(shù)Period大于零(它按點(diǎn)組計(jì)算)時(shí),函數(shù)結(jié)果默認(rèn)在函數(shù)周期的center位置添加到系列中,PeriodAlign屬性將會(huì)控制where以在整個(gè)期間內(nèi)放置函數(shù)計(jì)算。
TeeFunction1.PeriodAlign := paCenter ; { <-- by default it is centered }
paFirst和paLast常量將在每個(gè)Period的開始和結(jié)束的X坐標(biāo)處繪制計(jì)算。 每個(gè)藍(lán)點(diǎn)顯示使用該月第一天和最后一天之間所有點(diǎn)的平均值。
PeriodAlign = paLast
從下圖中可以看出,平均值是在月底繪制的:
PeriodAlign = paFirst
這種情況下,平均值就是在月初繪制的:
Deriving custom functions (VCL only)
創(chuàng)建一個(gè)新的Function組件只是創(chuàng)建一個(gè)從TTeeFunction派生的新組件(它也可以從現(xiàn)有函數(shù)派生)。 在TTeeFunction中有兩個(gè)重要的虛擬方法可以被覆蓋用以創(chuàng)建新的Function類型:
函數(shù)TTeeFunction.Calculate(SourceSeries:TChartSeries; First,Last:Longint):Double;
函數(shù)TTeeFunction.CalculateMany(SourceSeriesList:TList; ValueIndex:Longint):Double;
如果只有一個(gè)系列是數(shù)據(jù)源,則Calculate方法用于計(jì)算函數(shù)結(jié)果,如果多個(gè)系列是數(shù)據(jù)源,則CalculateMany用于計(jì)算函數(shù)結(jié)果。
示例:創(chuàng)建新的TMyFunction
TMyFunction返回平方和
type TMyFunction = class( TTeeFunction ) end;
此函數(shù)只能有一個(gè)數(shù)據(jù)源或多個(gè)數(shù)據(jù)源,因此我們將覆蓋Calculate和CalculateMany方法。
我們將用覆蓋TMyFunction的Calculate方法來(lái)做一件非常簡(jiǎn)單的事情。 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點(diǎn)以計(jì)算平方和。
使用MandatoryValueList屬性代替YValues屬性只是為了使此函數(shù)與HorizBarSeries等系列類型一起使用,其中是XValues保存點(diǎn)值而不是YValues。
如果只有一個(gè)系列是數(shù)據(jù)源,則Calculate方法用于計(jì)算函數(shù)結(jié)果,如果多個(gè)系列是數(shù)據(jù)源,則CalculateMany用于計(jì)算函數(shù)結(jié)果。
覆蓋TMyFunction的CalculateMany方法以允許TMyFunction與具有多個(gè)系列作為數(shù)據(jù)源的系列一起使用。 以編程的方式,一個(gè)系列可以添加為其他系列的數(shù)據(jù)源。
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被源系列中的每個(gè)點(diǎn)調(diào)用一次,從零開始,再以所有數(shù)據(jù)源的最小點(diǎn)數(shù)結(jié)束。
重點(diǎn)?。。?/strong>理解Calculate和CalculateMany之間的區(qū)別非常重要。 當(dāng)只有一個(gè)數(shù)據(jù)源并且只調(diào)用一次時(shí)調(diào)用Calculate。 當(dāng)有多個(gè)Series作為數(shù)據(jù)源時(shí),會(huì)多次調(diào)用CalculateMany(每個(gè)點(diǎn)一個(gè))。
如果對(duì)于TeeChart Pro VCL/FMX有任何的問(wèn)題或者想要咨詢的都可以點(diǎn)擊聯(lián)系
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: