图表的高位图钻取可以反映在另一个图表上吗?

时间:2016-05-05 13:24:14

标签: javascript jquery charts highcharts drilldown

我有两个单独的图表div,其中包含ID container1container2,我想知道是否可以在container1中向下钻取堆叠列,结果可以显示在container2中container1中的堆叠列保持不变。 真的很感谢你的帮助。

<div id="container1" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
<div id="container2" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

示例小提琴:http://jsfiddle.net/675kxe1q/

此区域图表显示在同一图表中的向下钻取,是否可以在不同的图表中显示它?

2 个答案:

答案 0 :(得分:2)

我认为您想要的不是向下钻取,而是使用第一张图表中的详细数据更新第二张图表。看看point.events.click。这将让您获得被点击的点。从这里,您可以在不同的图表中更新/设置数据。 点击事件逻辑:

plotOptions: {
  series: {
    point: {
      events: {
        click: function() {
          detailChart(this.category);
        }
      }
    }
  }
},

然后是一个将在container2创建新图表的常规函数​​:

  function detailChart(categoryName) {
    $('#container2').highcharts({
      chart: {
        type: 'column'
      },
      xAxis: {
        categories: ['week1', 'week2', 'week3', 'week5']
      },

      plotOptions: {
        series: {
          cursor: 'pointer',
          point: {
            events: {
              click: function() {
                detailChart(this.category);
              }
            }
          }
        }
      },

      series: [{
        data: [10, 20, 5, 4.9]
      }]
    });
  }

您可以关键不只是this.category的任何内容,并将您的详细信息系列设置为链接到您的点击密钥的数据数组。

答案 1 :(得分:2)

我认为最有效的解决方案是使用默认钻取,然后捕获钻取事件,从e.seriesOptions对象中提取钻取的系列并返回false值(停止事件)。下一步是参考系列运行新图表。

    chart: {
            type: 'column',
            events:{
                drilldown: function(e) {
                e.seriesOptions.color = e.point.color;
                detailChart(e.seriesOptions);
                return false;
              }
            }
        },
//....

  function detailChart(series) {
    console.log('d', series);
      $('#container2').highcharts({
        chart: {
          type: 'area'
        },
        xAxis: {
          categories: ['week1', 'week2', 'week3', 'week5']
        },

        plotOptions: {
          series: {
            cursor: 'pointer',
            point: {
              events: {
                click: function() {
                  detailChart(this.category);
                }
              }
            }
          }
        },

        series: [series]
      });
    }
});

示例: