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