gnuplot:如何将变量保存在表中.旨在找到最佳的配件范围



i具有一组数据点x,y,它们在某个范围内是线性的,并且在另一个一定范围内逐渐偏离线性。

所以我想制作" R"(线性回归因子)与" x"的图。在那个图中,我可以确定r何时远离1,我可以确定线性拟合的最佳范围。我想做一个像以下插图一样的情节:

以下论文的图2 https://arxiv.org/abs/1409.0614

所以我的想法到目前为止是这样的:

reset
file1 = "file1.dat"
do for [ nxz=0:50] {
fitrangein=150+nxz
fitrangefin=300
stats [fitrangein:fitrangefin] file1  u 1:2
print STATS_correlation
}

问题是:如何在表中存储stats_corryation的值?因此,我稍后可以使用:

plot "r_values_vs_x_variable.dat" u 1:2

col 1必须包含x值和col 2 col 2在" do for"的每个周期中生成的stats_corlyation的值。

我怀疑我需要某种选择CAT命令的选项,因此STATS_CORRYATION的第一个值可以粘贴在第1行,第2行中的第二个值等。但是我不知道如何准确地做。

您有任何建议还是不同的想法?非常感谢。

您可以使用set print重定向print命令的输出,请参见help set print。像

set print "r_values_vs_x_variable.dat"
do for ... {
    ....
    print fitrangein, STATS_correlation
}
set print

应该工作。

由于版本5.0,gnuplot也可以打印到命名的datablock,可以像文件一样使用,但不会存储到磁盘:

set print $data 
do for [i=1:10] {print i, i**2}
set print
plot $data us 1:2

具有不用临时文件将硬盘驱动器混乱的优势。

一种不同的方法是简单地绘制差异商:

plot lx=NaN, ly=NaN, dataf us (llx=lx,lx=$1,lly=ly,ly=$2, (lx+llx)/2):((lly-ly)/(llx-lx))

"使用"指示符大量使用串行评估运算符","将最后一个数据值通过LX和LLX,RSP转移。ly和lly。

最新更新