如何用两个相邻点的平均值填充序列中的缺失点

时间:2019-05-25 09:07:40

标签: highcharts

我的图表中有两个系列。我每天都有数据。我为两个系列中的每个数据注册两种信息。第一个系列有五个要点,而第二个系列有四个要点。至关重要的是,对于每个数据而言,这两者都至关重要。我希望第二个序列中的缺失点由其两个相邻点的平均值填充。

高库存有什么解决办法吗?

示例:

<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 个答案:

答案 0 :(得分:1)

您可以通过在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参考: