Javascript 在Highcharts中,当重新启用图表最右边的元素时,我的数据标签将消失

Javascript 在Highcharts中,当重新启用图表最右边的元素时,我的数据标签将消失,javascript,highcharts,Javascript,Highcharts,我正在使用react highcharts为一些工作数据绘制一个相对简单的柱状图。老板希望它成立,以便隐藏一个传说上的项目将调整规模,即使元素在图表的中间。我跟随highcharts论坛的fiddle,使我的数据消失并重新出现。太好了,一切正常!但是我有一个错误,我无法在我的代码中确定 每当我删除并返回最右边的可见元素时,右边元素的第二个元素就会丢失其数据标签 我有理由肯定问题在于我的HighCharts选项对象。以下是: const highChartsOptionsObject= { ch

我正在使用react highcharts为一些工作数据绘制一个相对简单的柱状图。老板希望它成立,以便隐藏一个传说上的项目将调整规模,即使元素在图表的中间。我跟随highcharts论坛的fiddle,使我的数据消失并重新出现。太好了,一切正常!但是我有一个错误,我无法在我的代码中确定

每当我删除并返回最右边的可见元素时,右边元素的第二个元素就会丢失其数据标签

我有理由肯定问题在于我的HighCharts选项对象。以下是:

 const highChartsOptionsObject= {
chart: {
  type: "column",
  style: {
    fontFamily: "helvetica",
  },
  height: 300,
},
title: {
  text: null,
},
xAxis: {
  allowDecimals: true,
  type: "category",
  crosshair: true,
},
yAxis: {
  min: 0,
  title: {
    text: getLabel(),
  },
  labels: {
    formatter: getLabelString()
    },
  },
},
credits: {
  enabled: false,
},
legend: {
  enabled: true,
},
tooltip: {
  formatter: function () {
    return `
      <b>${this.point.name}</b><br />
      ${
        getTooltip();
      }
    `;
  },
},
plotOptions: {
  column: {
    stacking: "normal",
    pointPadding: 0.3,
    borderWidth: 0,
    dataLabels: {
      enabled: true,
      crop: false,
      overflow: "none",
      formatter: function () {
        const labelString = "hard coded test";
        return labelString;
      },
    },
  },
  series: {
    cursor: "pointer",
    events: {
      legendItemClick: function () {
        if (this.visible) {
          this.setData([], false);
        } else {
          let elementData = getSeries()[this.index].data[0];
          this.setData([{ ...elementData }], false);
        }
      },
    },
  },
},
series: getSeries(),
const highChartsOptionsObject={
图表:{
键入:“列”,
风格:{
fontFamily:“helvetica”,
},
身高:300,
},
标题:{
文本:空,
},
xAxis:{
allowDecimals:对,
类型:“类别”,
十字准星:没错,
},
亚克斯:{
分:0,,
标题:{
text:getLabel(),
},
标签:{
格式化程序:getLabelString()
},
},
},
学分:{
启用:false,
},
图例:{
启用:对,
},
工具提示:{
格式化程序:函数(){
返回`
${this.point.name}
${ getTooltip(); } `; }, }, 打印选项:{ 专栏:{ 堆叠:“正常”, 点填充:0.3, 边框宽度:0, 数据标签:{ 启用:对, 作物:假, 溢出:“无”, 格式化程序:函数(){ const labelString=“硬编码测试”; 返回标签串; }, }, }, 系列:{ 光标:“指针”, 活动:{ legendItemClick:函数(){ 如果(这个可见){ this.setData([],false); }否则{ 让elementData=getSeries()[this.index].data[0]; this.setData([{…elementData}],false); } }, }, }, }, series:getSeries(),
})

作为参考,我的其他highcharts选项有:immutable:true和allowChartUpdate:true


如果有人认为其他事情是相关的,我很乐意提供更多信息,我只需要对它进行一些清理就可以了。

我在谷歌上搜索了一下,最后我发现了我的问题。在转换期间,列上的数据标签重叠。如果尚未将数据标签的allowOverlap设置为true,则默认为false。由于转换会导致重叠,highcharts会将其中一个数据标签设置为不可见/不显示

只需设置以下各项,即可轻松解决此问题:

    dataLabels:{
       allowOverlap: true
        }
    

我试图复制这个问题:但效果很好。也许它来自yAxis中的格式化程序:getLabelString()。您能在我可以使用的某个在线编辑器上用示例数据重现您的案例吗?如果要在React环境中执行此操作,请从本演示开始:如果纯JS足够,请从本演示开始: