Javascript Highcharts-根据垂直线变化的线性回归
我有一个问题是关于这个问题的后续问题: 我刚刚遇到了一个很好的例子,介绍了如何在Javascript Highcharts-根据垂直线变化的线性回归,javascript,highcharts,linear-regression,Javascript,Highcharts,Linear Regression,我有一个问题是关于这个问题的后续问题: 我刚刚遇到了一个很好的例子,介绍了如何在高图中绘制线性拟合: 现在,我的问题是:使用这个,我如何实现线性拟合,根据线的阻力变化 我要找的是: 从开始到第一条垂直线的线性拟合 从第一条垂直线到第二条垂直线的线性拟合 从第二条垂直线到终点的直线拟合 由于垂直线是可拖动的,我不确定这是否可行 更新: 这个扩展可能会让事情变得更简单:这是我的尝试,请看一下: 我们需要在初始图表加载上添加回归线: events: { load() {
高图中绘制线性拟合:
现在,我的问题是:使用这个,我如何实现线性拟合,根据线的阻力变化
我要找的是:
- 从开始到第一条垂直线的线性拟合李>
- 从第一条垂直线到第二条垂直线的线性拟合李>
- 从第二条垂直线到终点的直线拟合
由于垂直线是可拖动的,我不确定这是否可行
更新:
这个扩展可能会让事情变得更简单:这是我的尝试,请看一下:
我们需要在初始图表加载上添加回归线:
events: {
load() {
let chart = this,
newData = [];
chart.series[0].data.forEach(d => {
if (d.category > firstInitialX && d.category < secondInitialX) {
newData.push([d.category, d.x])
}
});
chart.addSeries({
regression: true,
name: 'Test input',
color: 'rgba(223, 83, 83, .5)',
data: newData,
regressionSettings: {
enableMouseTracking: false
}
})
}
}
事件:{
加载(){
让图表=这个,
新数据=[];
chart.series[0]。data.forEach(d=>{
如果(d.category>firstInitialX&&d.category
拖动注释后,我们需要更新回归线数据:
Highcharts.each(Highcharts.charts, function(chart) {
if (chart !== thisChart) {
chart.annotations[index].update({
labels: [{
point: {
x: newX
}
}],
shapes: [{
points: [{
x: newX,
xAxis: 0,
y: 0
}, {
x: newX,
xAxis: 0,
y: 1000
}]
}]
});
}
let firstAnnotation = chart.annotations[0].shapes[0].points[0].x;
let secondAnnoation = chart.annotations[1].shapes[0].points[0].x
chart.series.forEach(s => {
if (s.data.length !== 500) {
s.remove()
}
})
chart.series[0].data.forEach(d => {
if (d.category > firstAnnotation && d.category < secondAnnoation) {
newData.push([d.category, d.x])
}
});
chart.addSeries({
regression: true,
name: 'Test input',
color: 'rgba(223, 83, 83, .5)',
data: newData,
regressionSettings: {
enableMouseTracking: false
}
})
});
}
Highcharts.each(Highcharts.charts,函数(chart){
如果(图表!==此图表){
图表.注释[索引].更新({
标签:[{
要点:{
x:newX
}
}],
形状:[{
要点:[{
x:newX,
xAxis:0,
y:0
}, {
x:newX,
xAxis:0,
y:1000
}]
}]
});
}
设firstAnnotation=chart.annotations[0]。形状[0]。点[0]。x;
设secondAnnoation=chart.annotations[1]。形状[0]。点[0]。x
chart.series.forEach(s=>{
如果(s.data.length!==500){
s、 删除()
}
})
chart.series[0]。data.forEach(d=>{
if(d.category>firstAnnotation&&d.category
让我知道你对这种解决方案的看法。请随意改进。在我开始编写答案之前,我想确定一下您的要求-您是否希望呈现这两个注释之间的回归线并保持它们可拖动?这是正确的。。但我只需要垂直线就可以拖拉。。然后线性回归随着直线的移动而变化。到目前为止,你尝试了什么?我将更新我到目前为止尝试的reprex。。