Highcharts => Получение идентификатора точки при нажатии на линейный график - PullRequest
17 голосов
/ 19 августа 2010

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

Вот мой код:

plotOptions: {
      column: {
        pointWidth: 20
      },

      series: {
        cursor: 'pointer',
        events: {
          click: function(event) {
            requestData(event.point);
          }
        }
      }

Я пытался

requestData(this.point)

,

requestData(this.point.id)

тоже, но это не работает.

Как получить идентификатор точки?

Большое спасибо.

Ответы [ 6 ]

16 голосов
/ 19 августа 2010

Согласно документам, event.point содержит указатель на ближайшую точку на графике .

Так что я бы записал event.point на консоль и посмотрел, что доступно.

console.log(event.point);

Из документов:

click: Срабатывает при нажатии на серию. Ключевое слово this относится к самому объекту серии. Один параметр, событие, передается в функцию. Он содержит общую информацию о событиях на основе jQuery или MooTools в зависимости от того, какая библиотека используется в качестве базы для Highcharts. Кроме того, event.point содержит указатель на ближайшую точку на графике.

Пример на основе примера из документов: http://jsfiddle.net/5nTYd/

Щелкните точку и проверьте консоль.

11 голосов
/ 22 апреля 2011

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

Таким образом, вы можете построить данные своей серии примерно так:

 series: [{
  name: 'Example',
  yAxis: 0,
  type: 'spline',
  data: [[1294099200000,220.0,37],[1296432000000,190.0,40],[1297036800000,184.4,5]]
}]

В атрибуте данных над первым элементом указана дата (x), вторым элементом является другая точка данных (y), а третьим - идентификатор объекта, представляющего этот объект данных. Эта «z» не будет отображаться на графике, но будет отображаться как 3-й элемент в массиве конфигурации. Например: при использовании атрибута plotOptions для захвата щелчка идентификатор объекта отображается в предупреждении как this.config [2]

  plotOptions: {
    series: {
      cursor: 'pointer',
      point: {events: {click: function() {console.log(this); alert('Category: '+ this.category +', value: '+ this.y + 'Series: ' +  this.series.name + ' ID: ' + this.config[2])}}}
     }
   },
3 голосов
/ 10 мая 2013

Чтобы вернуть «ID» выбранной точки на графике, используйте значение «X»:

plotOptions: {
    series: {
        cursor: 'pointer',
        events: {
            click: function(event) {
                   // Log to console
                console.log(event.point);
                alert(this.name +' clicked\n'+
                      'Alt: '+ event.altKey +'\n'+
                      'Control: '+ event.ctrlKey +'\n'+
                      'Shift: '+ event.shiftKey +'\n'+
                      'Index: '+ event.point.x);
            }
        }
    }
},

См. Пример здесь: http://jsfiddle.net/engemasa/mxRwg/

0 голосов
/ 22 августа 2017
 plotOptions: {
   series: {
     cursor: 'pointer',
     point: {
       events: {
         click: function() {
           console.log(this); 
           alert('Category: '+ this.category +', value: '+ this.y + 'Series: ' +  this.series.name + ' ID: ' + this.config[2])
         }
       }
     }
   }
 },
0 голосов
/ 22 января 2015

У меня была такая же проблема ... если я правильно понимаю.Мое решение состоит в том, чтобы получить идентификатор серии ... Посмотрите, поможет ли это ...

plotOptions{
 series:{
  cursor: 'pointer',
    events: {
      click: function(event) {
        console.log(event.point.series.userOptions.id);
      }
    }
  }
0 голосов
/ 26 февраля 2013

Я нашел это старое сообщение в своем поиске, чтобы ==> добавить маркер к точке, когда я щелкаю диаграмму "Линия тренда" Highcharts [в примерах: "линия-время-ряд"] [когда я щелкаю в любом месте насама нарисованная линия.ну, не показывая вам слишком много кода, посмотрите в

  cursor: 'pointer',
                    point: {
                      events: {
                             click: function(e) {
                                alert("X("+this.x+"),Y("+this.y+")");
                                }//click
                          }//events
                           }//point

, если вы хотите больше подробностей, я рад предоставить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...