Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Highcharts-根据垂直线变化的线性回归_Javascript_Highcharts_Linear Regression - Fatal编程技术网

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