0

我正在尝试创建一个 PHP 脚本来绘制一些历史股票数据。

我有一个数组中的数据,并试图使用以下代码用 gchartphp 绘制它:

require_once("../gchart/gChart.php");
$lineChart = new gLineChart(1000, 200);
//********PROBLEM HERE**********
$lineChart->addDataSet($yearsData); 
//******************************
$lineChart->setLegend(array('Nice figures'));
$lineChart->setColors(array('ED237A'));
$lineChart->setVisibleAxes(array('x','y'));
$lineChart->setDataRange(0,1);
$lineChart->setLegendPosition('r');
// axisnr, from, to, step
$lineChart->addAxisRange(0,0,365);
$lineChart->addAxisRange(1,0,1);

$lineChart->setGridLines(floatval(1.9),10);
$lineChart->renderImage(true);

如果我在 addDataSet 中放置类似的内容,它会起作用并显示图表。

array(0.34234, 1, 10, .01, 20)

但是,如果我在 addDataSet 中放置一个包含 365 个值的数组,则图形不会呈现,并且页面显示损坏的图像符号。该页面不显示任何警告或错误。

有什么建议么?您可以绘制多少个值是否有限制?

4

1 回答 1

1

AFAIK,365 值对于 POST 应该没问题。如果你做了一个 GET,那么尺寸太大的可能性就会更大。

可能的问题是:
1)您没有输出图像。

$lineChart->renderImage(true);本身不会产生图像。您需要将脚本生成的 png 数据设置为标签的 src。因此,如果上面的脚本是“graph.php”,那么您可以将它显示在一个单独的文件中,例如:

<img src='graph.php' />

2)您在生成图像时将数据回显到屏幕上。

如果你看一下renderImagegChart.php 里面的函数代码,
第一行是 header('Content-type: image/png');

因此,在此调用之前将一个字符输出到屏幕上,例如调试输出(在 graph.php 中)会破坏您的图像。例如,以下将产生损坏的图像。

echo "x";
$chart->renderImage( true );
于 2011-09-28T21:38:28.190 回答