翻譯|使用教程|編輯:況魚杰|2019-08-01 09:50:40.900|閱讀 411 次
概述:本教程將會介紹系列的架構和編程。主要的內容分為系列類型,在圖表上可混合系列類型,系列價值表和系列事件,而本節主要介紹的是在圖表上可混合系列類型,系列價值表和系列事件。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
TeeChart for PHP包含100%的PHP源代碼。它支持PHP5及更高的版本。它可作為一個調色板組件整合到針對PHP的Delphi編程環境中,從而讓其他人在運行時以創建組件的方式來引用。第一個版本提供17種圖表類型(2D和3D的多種組合),11個數學函數和一些圖表工具組件以擴展功能。
本教程是TeeChart for PHP教程中與系列一起工作這一節。本章節的內容主要分為以下幾個部分:
系列類型
在圖表上可混合系列類型
系列價值表
系列事件
上一節我們介紹到了與系列一起工作(上)的系列類型,這一章節我們會接著介紹這一部分內容的下篇,內容包括在圖表上可混合系列類型,系列價值表和系列事件。
在圖表上可混合系列類型
TeeChart Pro提供了一個空的Chart Canvas作為數據系列的背景,這意味著沒有預定義圖表類型,但是您可以將所需的圖表類型定義為要顯示的系列類型的混合。由于某些系列類型的特殊性質,在圖表上混合使用一些系列類型是不切實際的。當您到達添加新系列這一步驟時,TeeChart會通過在圖表庫中顯示不適合的系列類型標識來幫助您。您可以在一個圖表中放置的系列數量是沒有實際限制。
添加新系列
使用圖表編輯器(參見教程1)或按代碼添加系列。
$bar1 = new Bar($tChart1->getChart()); $bar1->fillSampleValues(10);
選擇系列的軸
添加到圖表中的系列將自動將左軸和下軸作為參考軸。您可以更改參考軸,有4個軸可用:頂部,左側,底部和右側。通過代碼,更改軸將如下所示:
$bar1->setHorizontalAxis(HorizontalAxis::$TOP); $bar1->setVerticalAxis(VerticalAxis::$RIGHT);
每個軸都可以關聯1個以上的系列。TeeChart將決定適合與軸匹配系列的最佳比例,但您可以自己更改軸的Scales(參見軸控制的Scales部分)。可以添加附加軸,它們將復制與前4個軸相對應的刻度(參見軸控制的附加軸部分)。
連接系列
您能夠把一個系列當做另一個系列的數據源,通過以下代碼完成:
$bar1 = new Bar($tChart1->getChart()); $bar1->fillSampleValues(); $line1 = new Line($tChart1->getChart()); $average1 = new Average(); $line1->setFunction($average1); $line1->setDataSource($bar1); $line1->checkDataSource();
關于如何去使用Teechart函數的更多信息可以參加我們的下一章節內容—TeeChart for PHP教程(七):函數的使用。
更改系列訂單
更改系列訂單非常簡單。系列訂單將決定系列在圖表中相對于其他系列的相對顯示位置。使用SeriesList屬性或ExchangeSeries方法能夠達到這個效果。
$tChart1->exchangeSeries(0,1); //Change Series(0) with Series(1) in the index order
注意:交換Series后,系列的索引將被更改,因此,如果代碼重新運行,上面的代碼行將永久地交換2系列的0和1,0變為1,1變為0。
將系列設置為活動=假,系列將會從圖表中隱藏,但保持其數據內容不變。
系列價值表
TeeChart系列通過TChartValueList組件將其值存儲在可訪問和可修改的Valuelist中。
使用值的示例
此代碼需要用戶的鼠標單擊修改BarSeries Bar的值。
upDatePoint($valueIndex,$tChart1->getAxes()->getLeft()->calcPosPoint($e->Y));
調用UpdatePoint Sub例程來修改Bar的值:
private function upDatePoint($bar, $Y) { if($bar < $tChart1->getSeries(0)->getCount()) { $tChart1->getSeries(0)->getYValues()->setValue($bar,Y); } }
系列事件
OnGetAxisLabel
在我們想要更改或向一些或者所有軸標簽添加額外文本的情況下,必須使用OnGetAxisLabel事件,它允許獲取將要顯示的LabelText并在需要時修改它。
在這里我們可以看到一個使用示例:
<?php //Includes include "../../../sources/TChart.php"; function handleLoad($sender, $args) { // print 'object '.get_class($sender).' loaded with '.count($args).' args!<br />'; $sender->getHeader()->setText("OnLoad Event"); } function handleUnLoad($sender, $args) { ?><br><br><?php print 'object '.get_class($sender).' unloaded with '.count($args).' args!<br />'; ?></br><?php } // Args contains axis, index order to be displayed, labelText function handleGetAxisLabel($sender, $args) { // If it's going to display left axis labels if ($args[0] === $sender->getAxes()->getLeft()) { // if the left axis label value is bigger than 50 add extra character if ((int)$args[2] > 50) { $args[0]->getLabels()->labelText = $args[2].'-e'; } } else { if ($args[0] === $sender->getAxes()->getBottom()) { if ((int)$args[2] < 4) { // if value is less than 5 changes its labeltext $args[0]->getLabels()->labelText = $args[2].'-u'; } } } } $handlers = new EventHandlerCollection(); $handlers->add(new EventHandler(new ChartEvent('OnLoad'),'handleLoad')); $handlers->add(new EventHandler(new ChartEvent('OnUnload'),'handleUnload')); $handlers->add(new EventHandler(new ChartEvent('OnGetAxisLabel'),'handleGetAxisLabel')); $chart = new TChart(500,300, $handlers); $chart->getAspect()->setView3D(false); $points = new Points($chart->getChart()); $chart->addSeries($points); $points->fillSampleValues(); $points->getPointer()->setHorizSize(10); $points->getPointer()->setVertSize(5); $points->setColorEach(true); //$chart->getLegend()->getSymbol()->setWidth(10); $chart->getLegend()->getSymbol()->setSquared(false); $chart->render('chart.png'); $rand=rand(); print '<font face="Verdana" size="2">This Demo shows how to use the OnLoad, OnUnload and OnGetAxisLabel Events<p>'; print '<img src="chart.png?rand='.$rand.'">'; ?>
到這里TeeChart for PHP教程(六)就介紹完成了,在文中我也有提到,下一節我們將會介紹TeeChart for PHP教程(七):函數的使用。如果您有任何的建議或者疑惑都可以在評論區留言哦!
TeeChart for PHP已加入在線訂購,現在搶購即可享受優惠!
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: