如何使rangeSelector做多个系列的dataGrouping

时间:2015-06-27 04:23:28

标签: highcharts highstock

如果按天分组,则只会对第一个系列进行分组。我该如何制作它以便将两个系列分组?

在上面的例子中,两个系列都有相同的数据,但我目前的情况包括两个系列,每个点的x值相同但y值不同。

示例:http://jsfiddle.net/6751x0yj/1/

$('#container').highcharts('StockChart', {
        rangeSelector : {
            allButtonsEnabled: true,
            buttons: [{
                type: 'month',
                count: 3,
                text: 'Day',
                dataGrouping: {
                    forced: true,
                    units: [['day', [1]]]
                }
            }, {
                type: 'year',
                count: 1,
                text: 'Week',
                dataGrouping: {
                    forced: true,
                    units: [['week', [1]]]
                }
            }, {
                type: 'all',
                text: 'Month',
                dataGrouping: {
                    forced: true,
                    units: [['month', [1]]]
                }
            }],
            buttonTheme: {
                width: 60
            },
            selected: 2
        },

        title : {
            text : 'AAPL Stock Price'
        },

        subtitle: {
            text: 'Custom data grouping tied to range selector'
        },

        series : [{
            name : 'Series 1',
            data : data,
            marker: {
                enabled: null, // auto
                radius: 3,
                lineWidth: 1,
                lineColor: '#FFFFFF'
            },
            tooltip: {
                valueDecimals: 2
            }
        },{
            name : 'Series 2',
            data : data,
            marker: {
                enabled: null, // auto
                radius: 3,
                lineWidth: 1,
                lineColor: '#FFFFFF'
            },
            tooltip: {
                valueDecimals: 2
            }
        }]
    });

谢谢!

1 个答案:

答案 0 :(得分:2)

看起来像是一个已经报告here的错误。

解决方法是按降序更新系列:

var H = Highcharts;

H.wrap(H.Axis.prototype, "setDataGrouping", function (p, dg, r) {
    if (!dg) {
        dg = {
            forced: false,
            units: null
        };
    }

    if (this instanceof H.Axis) {
        for(var i = this.series.length - 1; i >= 0; i--) {
            this.series[i].update({
                dataGrouping: dg
            }, false);
        };
    }

    p.call(this, dg, r);
});

并演示:http://jsfiddle.net/6751x0yj/2/