Gnuplot:绘制残差

Gnuplot:绘制残差,gnuplot,Gnuplot,我正在尝试绘制最小二乘法的可视化图。最后应该是这样的: 现在我有了数据点和拟合曲线(在我的例子中是一条直线,称为f(x))。我缺少的是残差(在链接中,残差是绿线)。 意思:我想从每个数据点开始画线,垂直于拟合线 My data.txt看起来像这样(短端) 我的gnuplot命令是: f(x) = a*x +b + 1e-9 fit f(x) 'data.txt' u 1:2 via a, b plot 'data.txt' with points title 'data', f(x)

我正在尝试绘制最小二乘法的可视化图。最后应该是这样的:

现在我有了数据点和拟合曲线(在我的例子中是一条直线,称为f(x))。我缺少的是残差(在链接中,残差是绿线)。 意思:我想从每个数据点开始画线,垂直于拟合线

My data.txt看起来像这样(短端)

我的gnuplot命令是:

f(x) = a*x +b  + 1e-9
fit f(x) 'data.txt' u 1:2  via a, b
plot 'data.txt' with points title 'data',  f(x)  
到目前为止,我只设法把残差作为脉冲使用

plot 'data.txt' with points title 'data',  '' using 1:($2 - f($1)) w impulse, f(x)

但是像这样,从y=0开始向上向下,它们不在拟合线f(x)和数据点之间。

我想你在这里寻找
错误条

 plot 'data.txt' with points title 'data',\
      f(x) notitle,\
      'data.txt' u ($1):(f($1)):(f($1)):2 w yerrorbars title 'residuals'
还有
errorlines
样式,您可以使用基本相同的样式:

 plot 'data.txt' with points title 'data',\
      'data.txt' u ($1):(f($1)):(f($1)):2 w yerrorlines title 'residuals'

但在本例中,直线(
f(x)
)的绘制方式与残差的绘制方式相同。

第一部分正是我要找的,谢谢!对其他有类似问题的人的一个补充说明:我必须使用…
和第4点来更改点的样式。。。为了使这些点与残差更好地区分开来,@albifant——我原以为第一个是你想要的,但我把第二个也包括进去,因为它看起来很接近,可能会帮助其他人。您可能希望更明确地了解您正在使用点更改的内容。您可以更改点大小(
ps
)或点类型(
pt
):<代码>与点ps 2 pt 4
我的印象是,当你忽略
pt
而只选择
与点4
时,它的行为类似于隐式
与点pt 4
,但它并不完全相同。结果点样式实际上是相同的,但颜色却不同。因此,这两个版本都可以工作,
带有点pt 4
更优雅。
 plot 'data.txt' with points title 'data',\
      'data.txt' u ($1):(f($1)):(f($1)):2 w yerrorlines title 'residuals'