0

这是来自 Highcharts 论坛的一个老问题, http://www.google.com/url? sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CC4QFjAB&url=http%3A%2F%2Fwww.highslide.com%2Fforum %2Fviewtopic.php%3Ff%3D9%26t%3D16573&ei=J_2GUM7fEoSC9QT0lICoCA&usg=AFQjCNGq_GxmSd0YUxWUyy96UHLZA0zb9w&sig2=RzAkhldNbvCowk8I1kmRVg

我今天正在实施它,并且论坛帖子上的解决方案有效。但是,我需要制作一个自定义解决方案,它是具有 3 列的 2 级向下钻取图表。澄清一下,论坛上提供的解决方案仅适用于第一个图表上的 2 列,然后是钻取上的 1 列。我的图表在初始图表和细分图表上都需要 3 列。

我不太了解向下钻取转换及其工作原理,因此我很难自定义代码。实现中也有相当多的重复代码,所以如果有人对 Highcharts 深入了解有更好的理解,请随时分享一些关于如何使其工作的建议。

代码的关键部分是

            var drilldown = this.drilldown;

            if (drilldown) { // drill down
               setChart(drilldown.name, drilldown.categories, drilldown.data, drilldown.color);
            } else { // restore
                 setChart(name, categories, data);

             }

和 setChart():

function setChart(name, categories, data) {
        chart.counters.color = 0;
        chart.xAxis[0].setCategories(categories);
        while (chart.series.length > 0){
            chart.series[0].remove(true);
        }
        for (var i = 0; i < data.length; i++) {
            chart.addSeries({
                name: name[i],
                data: data[i]
            });
        }
    }

如何确定 this.drilldown 和 setChart() 的输入是使其正确的关键。

我试过的小提琴是:http: //jsfiddle.net/dTkh4/2/

4

1 回答 1

0

答案在

var drilldown = this.drilldown;

if (drilldown) { // drill down
   setChart(drilldown.name, drilldown.categories, drilldown.data);

} else { // restore
   setChart([name1, name2, name3], categories1, [data1, data2, data3]);
}

要使钻取视图显示 3 个拆分列,drilldown.name 和 Drilldown.data 需要是 3 个嵌套数组,并且每个子数组都有每个类别的值。对于还原部分,添加 name3 以在还原时显示 3 列而不是 2。

于 2012-10-24T02:49:02.407 回答