В Highcharts мои метки данных исчезают при повторном включении самого правого элемента моей диаграммы

#javascript #highcharts

#javascript #highcharts

Вопрос:

Я использую react-highcharts, чтобы нарисовать относительно простую столбчатую диаграмму для некоторых рабочих данных. Боссы хотели настроить его так, чтобы скрытие элемента в легенде корректировало масштаб, даже если элемент находится в середине диаграммы. Я следил за этой скрипкой с форума highcharts, чтобы мои данные исчезали и появлялись снова. Отлично, все работает! Но у меня есть ошибка, которую я не могу определить в своем коде.

Всякий раз, когда я удаляю, а затем возвращаю самый правый видимый элемент, второй справа элемент теряет свою метку данных. Возвращенная диаграмма без метки данных

Я достаточно уверен, что проблема заключается в моем объекте параметров 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(),
  

};

Для справки, моими другими параметрами highcharts являются: immutable: true и allowChartUpdate: true

Рад предоставить больше информации, если кто-то считает, что что-то еще имеет значение, мне просто нужно немного очистить это, чтобы продолжать в том же духе.

Комментарии:

1. Я попытался воспроизвести проблему: jsfiddle.net/m1rh9pLj/5 но это работает нормально. Возможно, это происходит от форматировщика: getLabelString() в yAxis.

2. Не могли бы вы воспроизвести свой случай с образцами данных в каком-нибудь онлайн-редакторе, над которым я мог бы поработать? Если вы хотите сделать это в среде React, начните с этой демонстрации: stackblitz.com/edit/react-nwseym?file=index.js Если чистого JS достаточно, начните с этой демонстрации: jsfiddle.net/Bastss/rwmb6dpy

Ответ №1:

Я немного погуглил и, наконец, определил свою проблему. Во время переходов метки данных в столбцах перекрываются. Если вы не установили для allowOverlap значение true для меток данных, то по умолчанию оно будет равно false . Поскольку переход вызывает перекрытие, highcharts установит одну из меток данных невидимой / не отображаемой.

Это можно легко исправить, просто установив:

     dataLabels:{
       allowOverlap: true
        }