Highcharts Highchart隐藏一个类别,然后重新缩放是混乱的

Highcharts Highchart隐藏一个类别,然后重新缩放是混乱的,highcharts,Highcharts,我试着画一张图表,在那里可以过滤类别,而且它工作得很好,我曾经这样做过 问题是:我的最后一个类别是其他类别的总和,所以更高。我希望当“总计”复选框被取消选中时,图表可以调整大小,但只有在我也取消选中“class7”复选框时,图表才可以调整大小 您可以在这里尝试: var图表=null; $(函数(){ var chart=新的Highcharts.chart('容器'{ 图表:{ 键入:“列”, 影子:对 }, 标题:{ 文本:“我的标题” }, xAxis:{ 类别:[{“类别”:“类别1”,

我试着画一张图表,在那里可以过滤类别,而且它工作得很好,我曾经这样做过

问题是:我的最后一个类别是其他类别的总和,所以更高。我希望当“总计”复选框被取消选中时,图表可以调整大小,但只有在我也取消选中“class7”复选框时,图表才可以调整大小

您可以在这里尝试:

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);
}
例如: