TeeChart for PHP包含100%的PHP源代码。它支持PHP5及更高的版本。它可作为一个调色板组件整合到针对PHP的Delphi编程环境中,从而让其他人在运行时以创建组件的方式来引用。第一个版本提供17种图表类型(2D和3D的多种组合),11个数学函数和一些图表工具组件以扩展功能。
本教程是TeeChart for PHP教程中与系列一起工作这一节。本章节的内容主要分为以下几个部分:
-
系列类型
-
在图表上可混合系列类型
-
系列价值表
-
系列事件
系列类型
Series组件是所有Series类型的先驱者。
系列类结构
作为TeeChart类型库结构的一小部分背景,下面是对系列类和接口的解释。下图显示了TeeChart系列类之间的关系。所有类都派生自通用的Series类,因此共享Series方法。几个抽象类派生自Series(Custom3DSeries,CustomBarSeries和CircledSeries),这些类以灰色突出显示,并且它们的接口不能直接用于编程,它们的特性由其后代Series类型继承。所有派生系列(橙色)均可在TeeChart图库中访问,以包含在您的图表中。以这种方式派生的TeeChart系列允许通过公共索引结构对继承方法进行可编程访问。
您可以在同一个图表中创建和添加新的和不同的系列类型。
//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)。图表使用线系列来区分股票。
将数据添加到系列
大多数系列类型(函数教程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();
与系列一起工作(上)的教程就到这里了,下一节我们将会介绍与系列一起工作(下),主要内容是在图表上可混合系列类型,系列价值表和系列事件,如果您对本文章有什么疑惑或者建议都可以在评论区留言,我们会及时处理。