Аннотации Highcharts не отображаются

1

Я пытаюсь динамически добавлять аннотации к моим высоким графикам в React. Я использую функцию addAnnotation для добавления новой аннотации всякий раз, когда в моем приложении запускается событие hover, но аннотация не отображается. Я chart.annotations отладчик в свой код, и когда я вызываю chart.annotations я вижу, что в настоящее время существует массив аннотаций, но они не являются рендерингом. Я даже сделал вызов addPlotLine в этой функции, и сюжетная линия отображается на диаграмме. Мой конфигурационный файл выглядит так:

chart: {
      annotations: [{
        labelOptions: {
          backgroundColor: 'rgba(0, 0, 0, 0.5)',
          verticalAlign: 'top',
          align: 'right',
        }
      }],
      annotationsOptions: {
      },
    .... some lots more config options
}

и моя функция зависания для добавления аннотации следующая:

if( isNumber(value) )
   //this renders a plotline
    chart.xAxis[0].addPlotLine(baseChartHandle.generateInteractivePlotLine(value));
    // this doesn't render my annotation however
    chart.addAnnotation({
      linkedTo: value,
      title: {
        text: "It works!"
      }
    });
}
  • 0
    Вы включили библиотеку аннотаций ( modules/annotations.js )?
  • 0
    Я включил require('highcharts/modules/annotations')(ReactHighcharts.Highcharts); в файле
Показать ещё 2 комментария
Теги:
highcharts
annotations

1 ответ

0
Лучший ответ

Я обнаружил, что когда я добавлял аннотации с использованием Highcharts, функция "linkedTo" никогда не работала, несмотря на мои испытания.

Несмотря на то, что я добавил, что руководство не смогло применить его. Я бы предложил в вашем случае добавить его по значению x и y, а затем найти точку таким образом. Вот как я успешно добавил аннотации в прошлом:

 series.data.forEach(function (point) {

                var annotationObject =
                    {
                        id: point.id,
                        labelOptions: {
                            y: 15,
                            verticalAlign: 'bottom',
                            distance: 25
                        },
                        labels: []
                    };

                }

                var text = <get text you want to push>;

                annotationObject.labels.push(
                    {
                        point: {
                            xAxis: 0,
                            yAxis: 0,
                            x: point.x,
                            y: point.y
                        },
                        text: text
                    }

                );

                _chart.addAnnotation(annotationObject);
            });

Я также обнаружил ошибку в HighCharts при использовании удаленных аннотаций в качестве хэдз-ап. Каждой точке нужен идентификатор, как указано выше, но он должен вызываться этой строкой:

           _chart.removeAnnotation(id);

Он удалит аннотацию, однако вы получите много жалоб от высоких карт, если после этого вы попытаетесь что-то сделать, и он сломается. Я нашел ответ здесь, в annotations.js:

Изображение 174551

Красный ящик - это код, который я добавил. Если вы удалите ANnotation (ann.id), и это будет rerenders, он не сработает, потому что объект label имеет значение null. Добавление этой проверки позволяет сделать это без сбоя labelCollectors.

Счастливый график.

  • 0
    Спасибо за ответ, однако, это не похоже на работу. Я получаю тот же результат, что и раньше. Он помещает объект аннотации в массив аннотаций диаграмм, но ничего не отображается.
  • 0
    Точки на моем графике не имеют значения y, только значение x, если это имеет значение.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню