我有两个单独的图表div,其中包含ID container1
和container2
,我想知道是否可以在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/
此区域图表显示在同一图表中的向下钻取,是否可以在不同的图表中显示它?
答案 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]
});
}
});
示例: