0

我正在尝试从 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
            });
        }
    });
});
4

2 回答 2

0

Highcharts 无法处理如此大量的数据,但是使用带有 dataGrouping 或延迟加载的 Highstock 应该能够处理很多点,请参阅演示

这篇文章也应该有所帮助。

于 2013-06-13T11:40:33.760 回答
0

听起来问题在于要呈现的数据太多。

您可以尝试使用速度更快的浏览器(Chrome 通常运行速度非常快)、限制数据或尝试其他图表库。

限制数据可能是最有可能起作用的方法。如果您需要显示所有数据,最好的方法是仅加载部分数据,然后如果用户例如滚动图表,则加载丢失的数据。

同时呈现更多数据的另一种方法是计算服务器上数据的平均值。例如,如果代码数据来自每秒,您可以在服务器上预先计算每小时甚至每天的平均值。这通常可以让您显示相对准确的图表而不会导致性能问题,并且如果您缩放图表,许多库还支持动态加载更准确的数据。

于 2013-06-12T19:34:17.987 回答