Как вернуть данные серии / точки из события наведения курсора мыши?

#highcharts

#highcharts

Вопрос:

Я создал диаграмму пончика, используя vue-highcharts / highcharts, и пытаюсь добавить текст при наведении курсора мыши в центр пончика. У меня есть добавление статического текста, однако я пытаюсь вернуть данные из точки, на которую я наведу курсор, чтобы отобразить их в центре, однако, похоже, я не могу найти какие-либо соответствующие данные из объекта события. Кто-нибудь знает, как я мог бы получить доступ к этим данным?

 chartOptions: {
  chart: {
    plotBackgroundColor: null,
    plotBorderWidth: null,
    plotShadow: false,
    type: 'pie'
  },
  legend: {
    align: 'right',
    enabled: true,
    layout: 'vertical',
    verticalAlign: 'middle'
  },
  plotOptions: {
    pie: {
      allowPointSelect: true,
      cursor: 'pointer',
      dataLabels: {
        enabled: false
      },
      center: ['50%', '50%'],
      showInLegend: true,
      events: {
        mouseOver: (e) => {
          const { chart } = this.$refs.highchartsRef;
          const height = chart.chartHeight / 2;
          const width = e.target.center[3];
          console.log({ chart });
          console.log({ e });
          chart.renderer
            .text('Top Test</br>Bottom Test', width, height, true)
            .css({
              color: '#4a4a4a',
              fontSize: '16px',
              fontWeight: 700
            })
            .addClass('highcharts-center-label text-center')
            .add();
          },
          mouseOut: () => {
            document.querySelector('.highcharts-center-label').remove();
          }
        }
      }
    },
    series: [{
      name: 'Categories',
      colorByPoint: true,
      size: '100%',
      innerSize: '60%',
      data: this.categories.map(category => {
        return {
          name: category.name,
          y: calculateCategoryWeight(category)
        };
      })
    }],
    title: null,
    tooltip: {
      pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    }
  }
  

Ответ №1:

Используйте point.events и базовую функцию вместо стрелки.

     plotOptions: {
        pie: {
            point: {
                events: {
                    mouseOver: function() {
                        var point = this,
                            series = point.series,
                            chart = series.chart;

                        console.log(point.y);
                    }
                }
            }
        }
    }
  

Живая демонстрация: http: //jsfiddle.net/blackLabel/7oub1xzj/

Ссылка на API: https: //api.highcharts.com/highcharts/plotOptions.pie.point.events