HighChart动态向下钻取

时间:2014-06-11 17:57:26

标签: javascript jquery highcharts

我使用小提琴上的样本创建了一个带有向下钻取的图表

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/drilldown/async/

当我点击第一级时,使用

成功添加下一级别的图表
 chart.addSeriesAsDrilldown(e.point, series);

我的问题是,现在我想要新添加的图表也有钻取。我不知道如何实现这一目标。任何帮助都会感激不尽。

此致

2 个答案:

答案 0 :(得分:1)

我找到了解决方法。实际上,当数据从网络服务获取为json以进行下一级别的深入分析时,我必须确保将属性向下钻取设置为 true ,这是我之前没有做的经过一些研究后我发现了它。我在下面以json格式给出了一些数据,参考了关于小提琴的例子。

当点击第一级时,我将转到Web服务并以

的形式获取数据
  "{\"name\":\"Animals\",\"data\": [[\"Cows\", 2],[\"Sheep\", 3]],\"drilldown\": true}"

未启用下一级别的下钻。为了进一步深入挖掘,我不得不修改上面的数据,如下所示我已经添加了属性drilldown为真

  (name == "Animals") resp = "{\"name\":\"Animals\",\"data\": [{\"name\":\"Cows\", \"y\": 2, \"drilldown\": \"true\"},{\"name\":\"Sheep\",\"y\": 3,\"drilldown\":\"true\"}]}";

这就是全部,看起来很简单:) 如果我有时间,将尝试在Fiddle上创建样本,如果这样做,将更新链接。

答案 1 :(得分:0)

$(function () {    

// Create the chart
$('#container').highcharts({
    chart: {
        type: 'column',
        events: {
            drilldown: function (e) {
                if (!e.seriesOptions) {

                    var chart = this,
                        drilldowns = {
                            'Animals': {
                                name: 'Animals',
                                data: [
                                    ['Cows', 2],
                                    ['Sheep', 3]
                                ]
                            },

                            'Fruits': {
                                name: 'Fruits',
                                data: [
                                    ['Apples', 5],
                                    ['Oranges', 7],
                                    ['Bananas', 2]
                                ]
                            },
                            'Cars': {
                                name: 'Cars',
                                data: [
                                    {
                                    name: 'Toyota',
                                    y: 4,
                                    drilldown: true
                                    },
                                    ['Volkswagen', 2],
                                    ['Opel', 5]
                                ]
                            }

                        },


                        series = drilldowns[e.point.name];

                    // Show the loading label
                    chart.showLoading('Simulating Ajax ...');

                    setTimeout(function () {
                        chart.hideLoading();
                        chart.addSeriesAsDrilldown(e.point, series);
                    }, 1000);
                }

            }
        }
    },
    title: {
        text: 'Async drilldown'
    },
    xAxis: {
        type: 'category'
    },

    legend: {
        enabled: false
    },

    plotOptions: {
        series: {
            borderWidth: 0,
            dataLabels: {
                enabled: true,
            }
        }
    },

    series: [{
        name: 'Things',
        colorByPoint: true,
        data: [{
            name: 'Animals',
            y: 5,
            drilldown: true
        }, {
            name: 'Fruits',
            y: 2,
            drilldown: true
        }, {
            name: 'Cars',
            y: 4,
            drilldown: true
        }]
    }],

    drilldown: {
        series: []
    }
})

});