绘制一条平均曲线的直线

4
我想画一条直线,使曲线的平均值与之重合。我的数据绘制方式如下:
plot 'dataset' u 2:4 w p smooth bezier

我的数据由多列组成,我想得到这样的东西:enter image description here 有什么好主意吗?我想这更像是插值而不是平均。曲线的起伏不重要,最好使用一条直线来插值曲线...
使用一条直线可能更容易适应,使用fit就足够了,但是,如何适应看起来不像是一个众所周知的曲线呢?让我给你举个例子?如何在主点集之间拟合一条平滑的曲线?请注意,图表的下部有一些噪声,我不想表示出来。 enter image description here

假设您拥有创建此图的值,为什么不只是找到平均值并将其与此图一起绘制?免责声明:我从未使用过gnuplot。 - Florin Stingaciu
@ Florin Stingaciu 我该如何计算曲线的平均值?也许拟合可以是解决方案? - Manolete
1个回答

4
如果您想对数据进行一些基本的统计分析,gnuplot拥有内置命令stats,可以实现您的需求。在绘制数据后,gnuplot提供了一些包含最小值、最大值等数据的内部变量。要查看这些变量,请键入show variables all

否则,如果您想将数据拟合成一条直线,gnuplot也可以做到:

f(x) = a*x + b
fit f(x) 'data.dat' using 2:4 via a,b
plot 'data.dat' using 2:4, f(x)

@andyras 这就是我想要的。问题是我需要绘制几条曲线并将它们拟合到 f(x),但只绘制一条线,即我最后拟合的那条线。如果我能为每条曲线都这样做,那就太好了,这样我就可以将它们全部表示出来。 - Manolete
@Manolete -- 我有点困惑。你想在最终图中显示哪些线条?你想要多条曲线和一条拟合线吗?还是多条曲线和多条拟合线?或者只需要一条拟合线? - mgilson
我有4条曲线,想要一起绘制4个拟合曲线。 - Manolete
1
@Manolete--你使用的是gnuplot4.6吗?如果是这样,stats绝对是最好的选择。stats 'dset1' u 1:2; a1=STATS_slope;b1=STATS_intercept ...然后 plot 'dset1' u 1:2, a1*x+b1, 'dset2' u 1:2, a2*x+b2, ...。此外请注意,与fit(需要能够拟合任何非线性或线性函数)不同,stats使用更好的线性回归拟合算法。 - mgilson
我目前正在使用4.2版本。 - Manolete

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接