TeeChart for PHP教程(六):与系列一起工作(上)

    TeeChart for PHP包含100%的PHP源代码。它支持PHP5及更高的版本。它可作为一个调色板组件整合到针对PHP的Delphi编程环境中,从而让其他人在运行时以创建组件的方式来引用。第一个版本提供17种图表类型(2D和3D的多种组合),11个数学函数和一些图表工具组件以扩展功能。

点击下载TeeChart for PHP试用版


    本教程是TeeChart for PHP教程中与系列一起工作这一节。本章节的内容主要分为以下几个部分:

  1. 系列类型

  2. 在图表上可混合系列类型

  3. 系列价值表

  4. 系列事件


系列类型

    Series组件是所有Series类型的先驱者。

系列类结构

    作为TeeChart类型库结构的一小部分背景,下面是对系列类和接口的解释。下图显示了TeeChart系列类之间的关系。所有类都派生自通用的Series类,因此共享Series方法。几个抽象类派生自Series(Custom3DSeries,CustomBarSeries和CircledSeries),这些类以灰色突出显示,并且它们的接口不能直接用于编程,它们的特性由其后代Series类型继承。所有派生系列(橙色)均可在TeeChart图库中访问,以包含在您的图表中。以这种方式派生的TeeChart系列允许通过公共索引结构对继承方法进行可编程访问。

TeeChart for PHP的内部Series Class层次结构

    您可以在同一个图表中创建和添加新的和不同的系列类型。

//Add a series at runtime 
$area1 = new Area($tChart1->getChart());
$area1->fillSampleValues(4);

//Or
$area1 = new Area(); KaTeX parse error: Expected 'EOF', got '&' at position 9: tChart1-&̲gt;addSeries(area1); $area1->fillSampleValues(4);

    在同一图表中混合不同系列类的一个示例是在设计时将区域(系列(0)),条形(系列(1))和线(系列(2))系列添加到图表中。

    所有系列访问一个公共索引结构 - 图表的系列列表。使用该系列可能如下所示:

getAspect()->setView3D(false);
//$tChart1->getPanel()->getGradient()->setVisible(false);
$tChart1->getPanel()->getGradient()->setEndColor(Color::GRAY());

//You could add the Series at runtime
a r e a 1 = n e w A r e a ( area1 = new Area( area1=newArea(tChart1->getChart());
b a r 1 = n e w B a r ( bar1 = new Bar( bar1=newBar(tChart1->getChart());
l i n e 1 = n e w L i n e ( line1 = new Line( line1=newLine(tChart1->getChart());
l i n e 2 = n e w L i n e ( line2 = new Line( line2=newLine(tChart1->getChart());

//Use Series common properties
$tChart1->getSeries(0)->fillSampleValues(10);
$tChart1->getSeries(1)->fillSampleValues(10);
$tChart1->getSeries(2)->fillSampleValues(10);
$tChart1->getSeries(3)->fillSampleValues(10);

$area1->setColor(new Color(230,250,105));
$area1->getLinePen()->setVisible(false);

$bar1->setColor(new Color(100,155,255));
$bar1->getMarks()->setColor(Color::WHITE());
$bar1->getMarks()->getPen()->setVisible(false);
$bar1->getMarks()->getArrow()->setVisible(false);
$bar1->getPen()->setVisible(false);

$line1->setColor(Color::RED());
$line2->setColor(Color::FUCHSIA());

KaTeX parse error: Expected 'EOF', got '&' at position 6: bar1-&̲gt;setBarStyle(…PYRAMID);
//Modify Line specific properties
$line1->setStairs(true); //Set line to Stairs
$line1->getLinePen()->setColor(Color::BLUE()); //LineSeries bounding lines colour

$tChart1->render("chart1.png");
$rand=rand();
print '';
?>

选择系列类型

    为图表选择系列类型很大程度上取决于您对图表的要求。但是,有时候Chart的选择取决于哪种Series类型支持输入变量的数量,因为要绘制的变量数量很多。下表显示了Series类型示例允许的变量数。

系列类型 数量的变量
数据源属性
Basic
Line 2 XValues, YValues, XLabel
Fast Line 2 XValues, YValues, XLabel
Bar 2 XValues, YValues (called Bar), XLabel
HorizBar 2 XValues, YValues (called Bar), XLabel
Area 2 XValues, YValues, XLabel
Point 2 XValues, YValues, XLabel
Pie 1 PieValues, XLabel
Arrow 4 StartXValues, StartYValues, XLabel, EndXValues, EndYValues
Bubble 3 Xvalues, YValues, XLabel, RadiusValues
Gantt 3 StartValues, EndValues, AY (Y axis level), AXLabel (Label optionally shown on Y-axis or as mark)
ShapeSeries 4 X0 (Top), Y0 (Bottom), X1 (Left), Y1 (Right)
Extended
Bezier 2 XValues, YValues, XLabel
Candle 5 OpenValues, CloseValues, HighValues, LowValues, DateValues
Point3D 3 XValues, YValues, XLabel, ZValues
Volume 2 XValues, YValues (VolumeValues), XLabel

    标签可用于扩展2变量Series Type的值。请参阅下面的示例,该示例是在同一图表中使用3个Bar Series类型的实例。

产品代码 月份 产量
10 1月 300
10 2月 325
10 3月 287
12 1月 175
12 2月 223
12 3月 241
14 1月 461
14 2月 470
14 3月 455

    在最简单的形式中,数据生成以下图表:

按月分组按产品分组

我们在上表(Stock)中添加了新值。

产品代码 月份 产量 Stock
10 1月 300 600
10 2月 325 715
10 3月 287 676
12 1月 175 245
12 2月 223 270
12 3月 241
315
14 1月 461 800
14 2月 470 755
14 3月 455 835

    库存的价值通常高于月产量,因此显示它们会给出下面的图表(这次是2D)。图表使用线系列来区分股票。


series3.gif

将数据添加到系列

    大多数系列类型(函数教程7除外)都使用Add和ADDXY方法添加数据。有一些例外,请参见下表:

系列类型 添加系列点 删除系列点
Standard Series types
Line

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

Horiz Line

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

Fast Line

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

Bar

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

HorizBar

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

Area

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

Point

Series.Add

Series.AddXY

Series.AddNull

Series.AddNullXY

Series.AddArray

Series.AddText

Series.AddXYColor

Series.AddXYText

Series.AddXYTextColor

Series.AddYColor

Series.AddYText

Series.AddYTextColor

Series.Delete

Series.Clear

Pie

Series.Add

Series.AddNull

Series.Delete

Series.Clear

Arrow

ArrowSeries.AddArrow

Series.AddNull

Series.AddNullXY

Series.Delete

Series.Clear

Bubble

BubbleSeries.AddBubble

Series.AddNull

Series.AddNullXY

Series.Delete

Series.Clear

Gantt GanttSeries.AddGantt

Series.Delete

Series.Clear

Shape

ShapeSeries.X0,

ShapeSeries.Y0,

ShapeSeries.X1,

ShapeSeries.Y1

TChart.RemoveSeries

(每个Shape都是独一无二的系列)

颜色

    添加点时,可以手动为点添加颜色。

$tChart1->addSeries(new Bar());
$tChart1->getSeries(0)->addYTextColor(50,"oranges", Color::ORANGE());

    或者,您可以允许TeeChart分配颜色。如果ColorEach设置为true,TeeChart将为每个新系列选择最多19种唯一且尚未使用的颜色之一,或者为每个新系列点选择一种颜色。

$tChart1->getSeries(0)->setColorEach(true);
for($i = 0; $i < 19; ++$i) {
    $higher = $i + 65;
    $tChart1->getSeries(0)->add(rand(0,100));
}

从系列中删除数据点

    使用Series.Delete从Series中删除一个点。

$tChart1->getSeries(0)->delete(7);
 //(8th point - Points index start at zero)

    Series-> Clear清除系列中的所有点。

将Null点添加到系列

    顾名思义,AddNull将为系列添加一个Null点,允许您为该点定义一个标签,但在该点处系列将会中断。在线系列的情况下,休息前的最后一个点不会在休息后加入到第一个点。

$line = new Line($tChart1->getChart());
$line->addNull();

    与系列一起工作(上)的教程就到这里了,下一节我们将会介绍与系列一起工作(下),主要内容是在图表上可混合系列类型,系列价值表和系列事件,如果您对本文章有什么疑惑或者建议都可以在评论区留言,我们会及时处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值