Highcharts Highchart隐藏一个类别,然后重新缩放是混乱的
我试着画一张图表,在那里可以过滤类别,而且它工作得很好,我曾经这样做过 问题是:我的最后一个类别是其他类别的总和,所以更高。我希望当“总计”复选框被取消选中时,图表可以调整大小,但只有在我也取消选中“class7”复选框时,图表才可以调整大小 您可以在这里尝试:Highcharts Highchart隐藏一个类别,然后重新缩放是混乱的,highcharts,Highcharts,我试着画一张图表,在那里可以过滤类别,而且它工作得很好,我曾经这样做过 问题是:我的最后一个类别是其他类别的总和,所以更高。我希望当“总计”复选框被取消选中时,图表可以调整大小,但只有在我也取消选中“class7”复选框时,图表才可以调整大小 您可以在这里尝试: var图表=null; $(函数(){ var chart=新的Highcharts.chart('容器'{ 图表:{ 键入:“列”, 影子:对 }, 标题:{ 文本:“我的标题” }, xAxis:{ 类别:[{“类别”:“类别1”,
var图表=null;
$(函数(){
var chart=新的Highcharts.chart('容器'{
图表:{
键入:“列”,
影子:对
},
标题:{
文本:“我的标题”
},
xAxis:{
类别:[{“类别”:“类别1”,“名称”:“类别1”},{“类别”:“类别2”,“名称”:“类别2”},{“类别”:“类别3”,“名称”:“类别3”},{“类别4”,“名称”:“类别4”},{“类别”:“类别5”,“名称”:“类别6”,“名称”:“类别6”},{“类别7”,“名称”:“类别7”;“类别7”;“名称”:“类别7”},{“类别”:“总数”;“名称”;“总数”,
标签:{
格式化程序:函数(){
返回this.value.name;
},
useHTML:true
}
},
亚克斯:{
allowDecimals:false,
分:0,,
标题:{
文字:“数字”
}
},
图例:{
已启用:true
},
工具提示:{
格式化程序:函数(){
返回“+this.x.name+”
+
this.series.name+':'+this.y+'
+
“总计:”+this.point.stackTotal;
}
},
打印选项:{
专栏:{
堆叠:“正常”,
数据标签:{
启用:对,
颜色:(Highcharts.theme&&Highcharts.theme.dataLabelsColor)| |“白色”,
格式化程序:函数(){
返回Highcharts.numberFormat(此.percentage,0)+'%';
}
}
}
},
系列:[{
姓名:'好',
颜色:“绿色”,
堆栈:“a”,
数据:[
223,174,139,27,17,6,3,589 ]
},
{
名称:“不正常”,
颜色:“红色”,
堆栈:“a”,
数据:[
21,29,26,14,15,11,11,127 ]
},
{
名称:'部分正常',
颜色:'橙色',
堆栈:“a”,
数据:[
5,11,25,1,1,3,0,46 ]
},
{
名称:“不可用”,
颜色:'灰色',
堆栈:“a”,
数据:[
20,70,67,160,163,170,168,818 ]
},
{
名称:“未完成”,
颜色:'棕色',
堆栈:“a”,
数据:[
173,158,185,240,246,252,260,1514 ]
}
]
},函数(){
$('input[type=checkbox]')。绑定('click',function(){
togglePointsByClass(this.value,$(this).is(':checked'),图表)
});
});
var visibleArr=[0,1,2,3,4,5,6,7];
函数togglePointsByClass(类名、shouldShow、图表){
var ischartdrity=false;
如果(应该显示){
chart.xAxis[0].userOptions.categories.forEach(函数(category,i){
if(category.class==className){
可视推送(i);
}
});
}否则{
chart.xAxis[0].userOptions.categories.forEach(函数(category,i){
if(category.class==className&&visibleArr.indexOf(i)>-1){
visibleArr.剪接(visibleArr.indexOf(i),1);
}
});
}
if(可视长度){
chart.xAxis[0]。更新({
min:Math.min.apply(null,visibleArr),
max:Math.max.apply(null,visibleArr)
})
}
}
$(“#容器”).highcharts().redraw();
});
谢谢您可以用它来设置yAxis的最大值
if (visibleArr.length) {
chart.xAxis[0].update({
min: Math.min.apply(null, visibleArr),
max: Math.max.apply(null, visibleArr)
}, false, false);
const max = visibleArr.reduce((a, b) => Math.max(chart.yAxis[0].stacks.columna[b].total, a), -Infinity)
chart.yAxis[0].setExtremes(0, max);
}
示例:可用于设置最大yAxis
if (visibleArr.length) {
chart.xAxis[0].update({
min: Math.min.apply(null, visibleArr),
max: Math.max.apply(null, visibleArr)
}, false, false);
const max = visibleArr.reduce((a, b) => Math.max(chart.yAxis[0].stacks.columna[b].total, a), -Infinity)
chart.yAxis[0].setExtremes(0, max);
}
例如: