5

Simple question - the range drawn on a plot can be changed with the set xrange [x_min:x_max] command.

Does this command also limit the range used when fitting a function using the data fitting tools in gnuplot? Is there a way to manually specify the ranged used for function fits? (One guess might be the command every? Do I need to over-ride xrange using every?)

The reason I ask is that I am using xrange to plot outputs zoomed in on the low value x region to view transient behaviour more clearly, but I think this may be "slicing off" values from the function fitting at larger x values outside the xrange region selected?

4

2 回答 2

7

这是一个老问题,但当前的答案是不正确的:xrange如果在 fit 命令中没有给出明确的范围,则当前的设置确实会影响用于拟合的范围。这可以通过一个简单的例子很容易看出:如果你有一个数据文件test.dat包含

1 1
2 2
3 3
4 4
5 6
6 8
7 10
8 12

并使用线性拟合,你得到

fit a+b*x "test.dat" via a,b
plot "test.dat" w p, a+b*x w l

在此处输入图像描述

并拟合参数 (a,b)=(-1.42, 1.59)。但是,如果你首先设置xrange你得到

set xrange [4:8]
fit a+b*x "test.dat" via a,b
plot "test.dat" w p, a+b*x w l

在此处输入图像描述

并拟合参数 (a,b)=(-4,2)。

这至少是 gnuplot 5.2 的当前行为,但这个 2009 年的旧线程表明这已经存在了很长一段时间。

于 2017-12-10T06:35:37.603 回答
3

set xrange [x_min:x_max]不影响拟合函数时使用的范围。

使用fit命令(同样适用于plot),您可以使用以下语法显式限制范围以适合变量:

[{dummy_variable=}{<min>}{:<max>}]

例如,您可以使用以下命令限制 x 轴的范围:

fit [min:max] f(x) "filename"
于 2015-06-29T22:47:43.793 回答