For loop 如何使用Gnuplot在同一图形上绘制for cycles?

For loop 如何使用Gnuplot在同一图形上绘制for cycles?,for-loop,gnuplot,curve-fitting,do-loops,gnuplot-iostream,For Loop,Gnuplot,Curve Fitting,Do Loops,Gnuplot Iostream,我想拟合多个数据集并将结果绘制在同一个图表上,我要做的是: do for [i=2:500]{ fit f(x) "myData" using 1:i via a,b plot f(x) } 拟合效果很好,最大的问题是该代码在每次迭代时生成不同的绘图。我希望所有拟合函数都在一个图中。有什么办法吗?我想你不能在同一个循环中进行拟合和绘图。嗯,可能会有multiplot环境(检查help multiplot),但我想这不是你的想法。 因此,您可以在do for循环中进行拟合,并

我想拟合多个数据集并将结果绘制在同一个图表上,我要做的是:

do for [i=2:500]{
fit f(x) "myData" using 1:i via a,b
plot f(x)
}

拟合效果很好,最大的问题是该代码在每次迭代时生成不同的绘图。我希望所有拟合函数都在一个图中。有什么办法吗?

我想你不能在同一个循环中进行拟合和绘图。嗯,可能会有
multiplot
环境(检查
help multiplot
),但我想这不是你的想法。 因此,您可以在
do for
循环中进行拟合,并将拟合的参数存储在数组中,以供以后在打印期间使用。 你没有指定任何函数,所以我假设了一些东西。检查以下示例:

代码:

### fitting in a loop
reset session

$Data <<EOD
1   1   6    4
2   4  10    1  
3   9  15    0
4  16  22    1
5  25  31    4
6  36  42    9
7  49  55   16
EOD

f(x,a,b,c) = a*(x-b)**2 + c
colMin = 2
colMax = 4
set fit quiet nolog
array A[colMax]
array B[colMax]
array C[colMax]

do for [col=colMin:colMax] {
    a=1; b=1; c=1             # some initial values, sometimes 0 or NaN is not a good start
    fit f(x,a,b,c) $Data u 1:col via a,b,c
    A[col] = a;  B[col] = b;  C[col] = c
}

set key top left
plot for [col=colMin:colMax] $Data u 1:col w p pt 7 title sprintf("Column %d",col), \
     for [col=colMin:colMax] f(x,A[col],B[col],C[col]) w l \
          title sprintf("a=%.2f, b=%.2f, c=%.2f",A[col],B[col],C[col])
### end of code
####在循环中安装
重置会话
$Data