2017-06-05 3 views
0

Ich habe den folgenden Code. Für einen bestimmten Tag werden die durchschnittliche Wartezeit und die maximale Wartezeit in Sekunden angezeigt. Die Handlungslinie gibt derzeit einen Durchschnitt dieser beiden Werte an. Was ich möchte, ist, dass die durchschnittliche nehmen nur unter Berücksichtigung der durchschnittlichen Zeiten so für einen bestimmten Zeitraum, wie vom Benutzer ausgewählt, würde die Linie für diesen ZeitraumHighcharts addPlotLine für einen Satz von Werten

var seriesOptionsChatChart = [], 
seriesCounterChatChart = 0, 
namesChatChart = ['ChatChartAVG','ChatChartMAX']; 

function createChartChatChart() { 

    Highcharts.stockChart('chart27', { 

     rangeSelector: { 
      buttons: [{ 
       type: 'day', 
       count: 1, 
       text: '1d' 
      },{ 
       type: 'day', 
       count: 5, 
       text: '5d' 
      }, { 
       type: 'week', 
       count: 1, 
       text: '1w' 
      }, { 
       type: 'month', 
       count: 1, 
       text: '1m' 
      }, { 
       type: 'month', 
       count: 3, 
       text: '3m' 
      }, { 
       type: 'year', 
       count: 1, 
       text: '1y' 
      }, { 
       type: 'all', 
       text: 'All' 
      }], 
      selected: 3 // all 
     }, 
    credits: { 
      enabled: false 
     }, 
      chart: { 
      zoomType: 'x', 
      events: { 
       load: computeAvg, 
       redraw: computeAvg 
      } 
     }, 

     yAxis: { 

      plotLines: [{ 
       value: 0, 
       width: 2, 
       color: 'silver' 
      }], 
      title: { 
       text: 'Seconds' 
      } 
     }, 

     plotOptions: { 
      series: { 
       showInNavigator: true, 
       turboThreshold:0 
      } 
     }, 

     tooltip: { 
      pointFormat: '<span style="color:{series.color}">Seconds</span>: <b>{point.y}</b><br/>', 
      split: true 
     }, 

     series: seriesOptionsChatChart 
    }); 
} 

$.each(namesChatChart, function (i, name) { 

    $.getJSON('/' + name.toLowerCase(), function (data) { 

     if (name=='ChatChartMAX') { 
      seriesColour = '#D50000'; 
     } 
     else { 
      seriesColour = '#1DA2B6'; 
     } 

     seriesOptionsChatChart[i] = { 
      name: name, 
      data: data, 
      color: seriesColour, 
     }; 
     seriesCounterChatChart += 1; 
     if (seriesCounterChatChart === namesChatChart.length) { 
      createChartChatChart(); 
     } 
    }); 
}); 


function computeAvg() { 
    var chart = this, 
     series = chart.series, 
     yAxis = chart.yAxis[0], 
     xAxis = chart.xAxis[0], 
     extremes = xAxis.getExtremes(), 
     min = extremes.min, 
     max = extremes.max, 
     plotLine = chart.get('avgLine'), 
     sum = 0, 
     count = 0; 

    Highcharts.each(series, function (serie, i) { 
     if(serie.name !== 'Navigator') { 
      Highcharts.each(serie.data, function (point, j) { 
       if (point.x >= min && point.x <= max) { 
        sum += point.y; 
        count++; 
       } 
      }); 
     } 
    }); 

    yAxis.removePlotLine('avgLine'); 
    yAxis.addPlotLine({ 
     value: (sum/count), 
     color: '#52B184', 
     width: 2, 
     id: 'avgLine', 
     label: { 
      text: (sum/count).toFixed(2), 
      verticalAlign: 'middle', 
      align: 'right', 
      rotation: 0, 
     }   
    }); 

} 
+1

Könnten Sie bitte Live-Beispiel Ihres Problems mit festen Daten, wie jsFiddle? –

+0

Sie ändern das Diagramm, es sollte Plotlines –

+0

aktualisieren Ich möchte nur, dass es sich auf eine bestimmte Serie und beide von ihnen zu konzentrieren – pee2pee

Antwort

0

Changed if(serie.name !== 'Navigator') { konzentrieren sich auf die Serie, die ich die durchschnittliche Anzeige Wollte

Verwandte Themen