高图表错误 #15:www.highcharts.com/errors/15



我正在尝试使用雅虎财经数据生成像 http://www.highcharts.com/stock/demo/candlestick-and-volume 这样的Highcharts烛台图。但是我不断收到此错误:http://www.highcharts.com/errors/15高图表错误 #15

Highcharts期望对数据进行排序

当您尝试创建折线系列或股票图表时,会发生这种情况,其中数据未按升序 X 顺序排序。出于性能原因,Highcharts 不会对数据进行排序,而是要求实现者对数据进行预排序。

我的代码如下。

$(function () {

    $.getJSON('http://websitescraper.heroku.com/?url=http://ichart.finance.yahoo.com/table.csv?s=000338.sz&callback=?', function (csvdata) {
        //console.log(csvdata);
        var arr = csvdata.split('n').slice(1);
        var data = [];
        for (var i = arr.length-1; i >= 0; --i) {
            //console.log(arr[i]);
            var line = arr[i].split(',');
            line[0] = Date.parse(line[0]);
            line = $.map(line, function(v) {
                return parseFloat(v);
            });
            line = line.slice(0,6);
            //var j = JSON.stringify(line.slice(0,0+6));
            console.log(line);
            data.push(line);
        }
        data = JSON.stringify(data.slice(1));
        console.log(data);
        run(data);
    });


});
function run(data) {
    // split the data set into ohlc and volume
    var ohlc = [],
            volume = [],
            dataLength = data.length,
    // set the allowed units for data grouping
            /*groupingUnits = [[
                'week',                         // unit name
                [1]                             // allowed multiples
            ], [
                'month',
                [1, 2, 3, 4, 6]
            ]],*/
            i = 0;
    for (i; i < dataLength; i += 1) {
        ohlc.push([
            data[i][0], // the date
            data[i][1], // open
            data[i][2], // high
            data[i][3], // low
            data[i][4] // close
        ]);
        volume.push([
            data[i][0], // the date
            data[i][5] // the volume
        ]);
    }

    // create the chart
    $('#container2').highcharts('StockChart', {
        rangeSelector: {
            selected: 1
        },
        title: {
            text: 'Shanghai Composite Index Historical'
        },
        yAxis: [{
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'OHLC'
            },
            height: '60%',
            lineWidth: 2
        }, {
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'Volume'
            },
            top: '65%',
            height: '35%',
            offset: 0,
            lineWidth: 2
        }],
        series: [{
            type: 'candlestick',
            upLineColor: 'red',
            downLineColor: 'green',
            name: 'SSE',
            data: ohlc,
            /*dataGrouping: {
                units: groupingUnits
            }*/
        }, {
            type: 'column',
            name: 'Volume',
            data: volume,
            yAxis: 1
            /*dataGrouping: {
                units: groupingUnits
            }*/
        }]
    });
}

有人可以帮忙吗?多谢!

问题是data = JSON.stringify(data.slice(1)); .它将数组转换为字符串,因此Highstock无法识别它。删除JSON.stringify,它将正常工作:

data = data.slice(1);

这是演示

最新更新