我正在尝试从多个数据文件中获取散点图。 我想在图中得到线性拟合,我想将相关系数写入图中。 我想对这些数据文件中的某些行进行操作。 这是我的线性拟合:
fit [0:1] [0:1000] f(x) '< for i in data_1.csv data_2 data_3.csv \
data_4.csv data_5.csv; do cat "$i"; echo; done' every ::121::361 using 5:27 via a,b
这有效.... 现在以相同的方式获得相关系数会很棒......
stats '< for i in data_1.csv data_2 data_3.csv \
data_4.csv data_5.csv; do cat "$i"; echo; done' every ::121::361 using 5:27 "Correlation C."
这不起作用 我收到这个错误:
format must have 1-7 conversions of type double (%lf)
一些更新:
这是我合适的输出
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = -410.518 +/- 32.5 (7.918%)
b = 746.018 +/- 5.448 (0.7302%)
correlation matrix of the fit parameters:
a b
a 1.000
b -0.695 1.000
我不确定输出是否适用于我的bash脚本以适应多个文件的曲线。斜率为-410.518似乎很奇怪。
更新的问题:这个配件是否适用于包含多个文件的gnuplot?实际的Plot看起来不错,但为什么输出中存在如此奇怪的值?
答案 0 :(得分:1)
这只是一个语法错误,从"Correlation C."
命令中删除stats
,或使用name
为生成的变量提供STATS_
以外的前缀:< / p>
stats '...' name 'CorrelationC_'
show variables CorrelationC_
而且,您可以使用以下方法简化您的通话: awk
合并所有文件(如果数据文件的最后一行没有新行,也可以合并cat data_*.csv
):
cmd = '< awk "//" data_*.csv'
stats cmd every ::121::361 using 5:27
...
plot cmd ...