我试图创建一个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个值的数组,则图形不呈现,页面显示破碎的图像符号。此页面未显示任何警告或错误。
有什么建议吗?你能画多少个值是有限制的吗?
对于POST来说,365个值应该很好。如果您执行GET操作,则更有可能出现大小过大的情况。
可能的问题是:
1)你没有输出图像。
$lineChart->renderImage(true);
本身不会产生图像。您需要将脚本生成的png数据设置为标记的src。因此,如果上面的脚本是'graph.php',那么您将把它显示在一个单独的文件中,如:
<img src='graph.php' />
2)在生成图像时,您正在向屏幕回显数据。
如果你看一下gChart.php里面的renderImage
函数代码,
第一行是header('Content-type: image/png');
因此,即使在此调用之前向屏幕输出一个字符,例如调试输出(在graph.php中)也会破坏图像。例如,下面的代码将生成一个破碎的图像。
echo "x";
$chart->renderImage( true );