我正在尝试通过API从我的图表中加载数据。所有数据都正确地进入图表,但图表没有加载,我得到了无响应的脚本错误。我正在使用Highcharts。有什么建议?谢谢。我的代码如下。
模型
public function ajax_get_chart() {
$quotes = $this->rest->get('api/1/BTCUSD/trades/fetch');
$series_data = array();
$results = $quotes->return;
$i = 0;
foreach ($results as $quote)
{
$series_tmp = array(
'date' => $quote->date,
'price' => $quote->price
);
$series_data[]= $series_tmp;
$i= $i+1;
}
die (json_encode($series_data));
return TRUE;
}
的Javascript
$(document).ready(function() {
var chart;
$.ajax({
url: "/chart/ajax_get_chart", // the URL of the controller action method
dataType: "json",
success: function(result)
{
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
defaultSeriesType: 'bar'
},
title: {
text: 'Stacked bar chart'
},
xAxis: {
title: {
text: 'Price'
}
},
yAxis: {
min: 0,
title: {
text: 'Date'
}
},
legend: {
backgroundColor: '#FFFFFF',
reversed: true
},
tooltip: {
formatter: function() {
return ''+
this.series.name +': '+ this.y +'';
}
},
plotOptions: {},
series: result
});
}
});
});
答案 0 :(得分:0)
听起来问题是存在太多数据。
您可以尝试使用更快的浏览器(Chrome通常可以快速运行),限制数据或尝试其他图表库。
限制数据可能是最有可能工作的数据。如果您需要显示所有数据,最好的方法是仅加载部分数据,然后如果用户滚动图表,则加载缺失的数据。
同时提供更多数据的另一种方法是计算服务器上数据的平均值。例如,如果股票代码数据来自每秒,您可以预先计算服务器上的每小时甚至每日平均值。这通常允许您显示相对准确的图表而不会导致性能问题,并且如果您缩放图表,许多库还支持动态加载更准确的数据。
答案 1 :(得分:0)
Highcharts无法处理如此庞大的数据,但使用Highstock与dataGrouping或延迟加载你应该能够处理很多点,请参阅demo。
this article也应该有所帮助。