JpGraph之失效的SetColor

JpGraph is an Object-Oriented Graph creating library for PHP >= 5.1 The library is completely written in PHP and ready to be used in any PHP scripts (both CGI/APXS/CLI versions of PHP are supported).

开始是准备用原生的GD库画股票行情图的,但是感觉太麻烦了,于是就想到了第三方库,并最终选中了jpgraph库。

jpgraph正式网站上的几个展示图片挺不错的。但是下载文件本地应用却发现问题不少。附在源代码中的手册有一些代码在新版本中不适用。LinePlot的SetColor方法按照手册写没有效果。后来在网上搜索了很多地方,终于在一个个人博客找到了答案。

博主的博文节选如下:

问题目前存在于3.5.0b1版本

使用版本为3.5.0b1的JpGraph画线方法,设置线的颜色方法失效。

$lineplot=new LinePlot($ydata);
$lineplot->SetColor(‘red’);//这个方法
$lineplot->SetWeight( 2 ); // Two pixel wide

$graph->Add($lineplot);

后经使用稳定版3.0.7测试,同样的代码颜色设置成功。3.5.0b1版本发布时间为2010.10.07,至今已经有9个月了,难道他们就没有发现这个BUG?使用的人太少了,可惜。

有一个访客留言告诉了我们问题的所在: 这个不是bug in version 3.5.0b1, methods to change designs of each plot should be used after $graph->add($plot) method.

当时我看到这里就知道问题所在,就没继续往下看了。没想到今天又遇到一个类似的问题, BarPlot SetColor()和SetFillColor()都没有效果,也是那个手册的例子也不管用,又一次搜索到此处,发现上面那个网友的下方,另一个网友给出了解释:

Thursday, 21 October 2010 jpGraph – cannot change line colour (or color) Using jpGraph, an excellent package for plotting graphs from database data via PHP, I hit a problem: setting $lineplot->Setcolor(“blue”); had no result. Nor did $lineplot->SetWeight(2); Eventually, I sent off an enquiry to jpGraph – and back came a very prompt reply (from the Far East): in version 3.5.0b1, methods to change designs of each plot should be used after $graph->add($plot) method. This is really counter-intuitive. But it works. So it goes like this $bplot = new BarPlot($data1y); $graph->Add($bplot); // NOW change properties of the plot – these work ONLY after calling Add() $bplot->SetWeight(0); $bplot->SetFillGradient(‘#FFAAAA:0.7’, ‘#FFAAAA:1.2’, GRAD_VER); There is a note in the documentation included as part of the package, at: jpgraph-3.5.0b1/docs/chunkhtml/ch29s02.html

原来是没有仔细看手册,手册里面有对新版本的说明。
文中说提到的博文的地址为http://gaodongchen.blshe.com/post/2760/701404