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

Highcharts 如何用两个相邻点的平均值填充序列中的缺失点,highcharts,Highcharts,我的图表中有两个系列。我每天都有数据。我为两个系列中的每个数据注册了两种信息。第一轮有五分,第二轮有四分。对双方来说,每个数据都有一个点是至关重要的。我希望第二个系列中的缺失点由其两个相邻点的平均值填充 highstock有什么解决办法吗 例如: <script src="jquery.js"></script> <script src="highstock.js"></script> <script type="text/javas

我的图表中有两个系列。我每天都有数据。我为两个系列中的每个数据注册了两种信息。第一轮有五分,第二轮有四分。对双方来说,每个数据都有一个点是至关重要的。我希望第二个系列中的缺失点由其两个相邻点的平均值填充

highstock有什么解决办法吗

例如:

<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>

jQuery(函数(){
var$=jQuery;
Highcharts.stockChart(“图表”{
图表:{
平移:错误,
},
打印选项:{
系列:{
数据分组:{
是的,
单位:[“天”,“1]]]
},
}
},
系列:[{
键入:“行”,
颜色:“#23bdbd”,
数据:[
[1558224000000,8197.68969113999992259778082370758056640625],
[1558310400000,7978.3090724399999089655466377735137939453125],
[1558396800000,7963.3277791099999376456253230571746826171875],
[1558483200000,7680.06654589000027044676244258880615234375],
[1558569600000,7881.846721050000269315205514430999755859375]
],
},
{
键入:“行”,
颜色:“#ff5d5d”,
数据:[
[1558224000000,100],
[1558310400000,150],
[1558483200000,2300],
[1558569600000,5500]
],
}],
});
});

您可以通过在
加载
事件回调中添加附加逻辑来实现。过滤数据并查找缺失点,然后使用
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);
      }
    }
  }
演示:

  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参考:

  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);
      }
    }
  }