2014-04-16 5 views
2

Итак, у меня есть несколько графиков диаграмм на одной странице. Некоторые из этих графиков (строк) содержат несколько рядов на одном графике. Проблема, с которой я сталкиваюсь, состоит в том, чтобы выбрать несколько точек для одной или обеих серий.Highcharts - Множественная ось Y

Вот некоторые примеры кода на то, что я пытаюсь сделать, но это дает мне проблемы ...

function hc_json(series, hc_id) { 
    $('#' + hc_id).highcharts('StockChart', { 
     chart: { 
      events: {   //Sets an event listener for the chart 
       /* 
       * If an event is registered it checks if the external zoom/selects are checked. 
       * If select is checked it gets the data points that were within the range at sets 
       * them as selected. 
       */ 
       selection: function(event) { 
        var mode = $('input[name=mode]:checked', '#' + hc_id + '_control').val(); 
        if (mode != hc_id + '_zoom') { 

         for (var i = 0; i < this.series.length; i++) 
         { 
          console.log("Series: ", this.series); 
          console.log("Series length: ", this.series.length); 
          var points = this.series[i].points; // visible points 
          var xs = event.xAxis[0]; //There seems to be no min/max forxAxis[1] 
          $.each(points, function (i,p) { 
           if (p.x >= xs.min && p.x <= xs.max) { 
            console.log("Point:", p.x, "is selected"); 
            p.select(true, true); 
           } 
          }); 
          //return false; 
         } 
         return false; 
        } 
       }, 
      }, 

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

ответ

1

Пожалуйста, посмотрите на это решение:

chart: { 
     events: { 
      selection: function(event) { 
       var chart = this, 
        min = event.xAxis[0].min, 
        max = event.xAxis[0].max, 
        txt = ''; 
       if (event.xAxis) { 

        $.each(chart.series,function(i,serie){ 
         $.each(serie.data,function(j,point){ 
          if(point.x >=min && point.x <=max) { 
           txt += '<br>serie: ' + serie.name + ' point: '+ point.y; 
           point.select(true,true); 
          } 
         }); 
        }); 

        $report.html(txt); 
       } 
      } 
     }, 
     zoomType: 'x' 
    }, 

http://jsfiddle.net/cNRx5/2/

+0

Спасибо так много! Это именно то, что я искал! – cmircovich

Смежные вопросы