Как я могу заполнить отсутствующие точки в серии со средним из двух соседних точек - PullRequest
0 голосов
/ 25 мая 2019

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

Есть ли у хайстока какое-либо решение для этого?

пример:

<script src="jquery.js"></script>
<script src="highstock.js"></script>




<script type="text/javascript">
jQuery(function(){
    var $ = jQuery;

    Highcharts.stockChart('chart', {
        chart: {
            panning: false,
        },
        plotOptions:{
            series:{
                dataGrouping: {
                    forced: true,
                    units: [['day', [1]]]
                },
            }
        },
        series: [{
            type: 'line',
            color:'#23bdbd',
            data: [
                [1558224000000,8197.68969113999992259778082370758056640625],
                [1558310400000,7978.3090724399999089655466377735137939453125],
                [1558396800000,7963.3277791099999376456253230571746826171875],
                [1558483200000,7680.06654589000027044676244258880615234375],
                [1558569600000,7881.846721050000269315205514430999755859375]
            ],
        },
        {
            type: 'line',
            color:'#ff5d5d',
            data: [
                [1558224000000,100],
                [1558310400000,150],
                [1558483200000,2300],
                [1558569600000,5500]
            ],
        }],
    });

});
</script>
<div id="chart"></div>

1 Ответ

1 голос
/ 27 мая 2019

Этого можно добиться, добавив дополнительную логику в обратный вызов события load. Отфильтруйте данные и найдите отсутствующие точки, затем добавьте отсутствующие точки, используя series.addPoint(). Проверьте код и демоверсию, размещенную ниже.

Код:

  chart: {
    panning: false,
    events: {
      load: function() {
        const chart = this;
        const absentPoints = chart.series[0].xData.filter(
          data => chart.series[1].xData.indexOf(data) === -1
        );

        absentPoints.forEach(absentPoint => {
          const index = chart.series[0].xData.indexOf(absentPoint);
          const value =
            (chart.series[1].yData[index] +
              chart.series[1].yData[index - 1]) /
            2;

          chart.series[1].addPoint([absentPoint, value], false);
        });

        chart.redraw(false);
      }
    }
  }

Демо:

Справочник по API:

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