我正在尝试创建一个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个值的数组,则图形不会呈现,页面会显示损坏的图像符号。该页面没有显示警告或错误。
有什么建议吗?您可以绘制多少值的限制?
答案 0 :(得分:1)
AFAIK,365值对于POST应该没问题。如果你做了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 );