Graph 使用Gnuplot的近似图/曲线拟合

Graph 使用Gnuplot的近似图/曲线拟合,graph,gnuplot,curve-fitting,Graph,Gnuplot,Curve Fitting,我试图用二次方程的近似图(曲线拟合)。我有4个数据文件,其中包含x和y列。我确定系数,并为每个数据文件编写每个系数文件 clk0_h clk0_h_c clk0_s clk0_s_c clk1_h clk1_h_c clk1_s clk1_s_c c coefficient File (As of now I determie manually for generate Graph in python) 我得到的图表是: gnuplot代码是: set title "Appro

我试图用二次方程的近似图(曲线拟合)。我有4个数据文件,其中包含x和y列。我确定系数,并为每个数据文件编写每个系数文件

clk0_h  clk0_h_c  clk0_s  clk0_s_c  clk1_h  clk1_h_c  clk1_s  clk1_s_c 
c coefficient File (As of now I determie manually for generate Graph in python)
我得到的图表是:

gnuplot代码是:

set title "Approximation Graph"
set term png
set output 'plot.png'
f(x) = a*x*x + b*x + c
fit f(x) 'clk0_h' via 'clk0_h_c'
fit f(x) 'clk1_h' via 'clk1_h_c'
fit f(x) 'clk0_s' via 'clk0_s_c'
fit f(x) 'clk1_s' via 'clk1_s_c'
plot "clk0_h" using 1:2 with lines, f(x), "clk1_h" using 1:2 with lines, f(x), "clk0_s" using 1:2 with lines, f(x), "clk1_s" using 1:2 with lines, f(x)
我试着去逼近每一条线的图形。但它看起来像是混合或覆盖。 我需要使用gnuplot创建以下图形。我知道,我离原始图形很远。 但是我可以知道,可以使用gnuplot创建散点图

在下图中,虚线表示近似值(对于仅用两个表示的示例),但在工作图中,我们需要四条近似值线


我今天只尝试了gnuplot,还需要创建图形。

您总是使用系数文件中给出的不同起始值来拟合相同的函数
f(x)
。为了拥有四个不同的函数,还必须定义这四个不同的函数:

f0_h(x) = a0_h * x**2 + b0_h * x + c0_h
fit f0_h(x) 'clk0_h' via 'clk0_h_c'

f1_h(x) = a1_h * x**2 + b1_h * x + c1_h
fit f1_h(x) 'clk1_h' via 'clk1_h_c'

f0_s(x) = a0_s * x**2 + b0_s * x + c0_s
fit f0_s(x) 'clk0_s' via 'clk0_s_c'

f1_s(x) = a1_s * x**2 + b1_s * x + c1_s
fit f1_s(x) 'clk1_s' via 'clk1_s_c'

set style data lines
plot 'clk0_h' u 1:2, f0_h(x), \
     'clk1_h' u 1:2, f1_h(x), \
     'clk0_s' u 1:2, f0_s(x), \
     'clk1_s' u 1:2, f1_s(x)
因此,系数文件还必须包含不同的参数定义(使用
a0_h
等)

如果要保持系数文件的格式相同(仅使用
a
b
c
),可以使用一个函数
f(x)
进行拟合,然后将拟合变量分配给要绘制的具体函数:

f(x) = a * x**2 + b * x + c
f0_h(x) = a0_h * x**2 + b0_h * x + c0_h
f1_h(x) = a1_h * x**2 + b1_h * x + c1_h
f0_s(x) = a0_s * x**2 + b0_s * x + c0_s
f1_s(x) = a1_s * x**2 + b1_s * x + c1_s

fit f0_h(x) 'clk0_h' via 'clk0_h_c'
a0_h = a; b0_h = b; c0_h = c;

fit f1_h(x) 'clk1_h' via 'clk1_h_c'
a1_h = a; b1_h = b; c1_h = c;

fit f0_s(x) 'clk0_s' via 'clk0_s_c'
a0_s = a; b0_s = b; c0_s = c;

fit f1_s(x) 'clk1_s' via 'clk1_s_c'
a1_s = a; b1_s = b; c1_s = c;

set style data lines
plot 'clk0_h' u 1:2, f0_h(x), \
     'clk1_h' u 1:2, f1_h(x), \
     'clk0_s' u 1:2, f0_s(x), \
     'clk1_s' u 1:2, f1_s(x)

非常感谢您的回复。我们可以在Gnuplot中创建散点图吗?如果可以,你能给我一些生成散点图的想法吗?Well,散点图最简单的可能是带有点的
splot'data.txt'。如果你有一些特殊的需要,我建议你问一个新问题。当你的时间非常有限,并且你得到了适当的意见时,真的非常感谢