格努普洛特力"No usable data in this plot to auto-scale axis range"条件绘图中的加法



我使用简单的代码从一个文件创建一系列图像,具体取决于条件。在这样做的时候,我意识到:

splot [1:150][1:150][] "dinozaur" u 5:6:(($4==0.4+0.0025*3)?$2:1/0)

。不起作用,但:

splot [1:150][1:150][] "dinozaur" u 5:6:(($4==0.40750)?$2:1/0)

。工程。

但是,两者兼而有之

splot [1:150][1:150][] "dinozaur" u 5:6:(($4==0.5+0.0025*3)?$2:1/0)

。和

splot [1:150][1:150][] "dinozaur" u 5:6:(($4==0.50750)?$2:1/0)

工作。

如果我收到错误,那就是标题中的错误。 我是否犯了某种明显的错误?

我包含一段数据文件,第 4 列的值为 0.40750 https://www.dropbox.com/s/lpv0m2wfoo3qwl7/dinozaur?dl=0

计算机上的浮点运算并不精确。例如,0.4+0.0025*3 可能与 0.40750 不完全相同。有关详细信息,请看这个问题:浮点数学是否损坏?

您通常希望避免测试浮点数以实现严格相等。相反,您可以测试两个数字是否足够接近。例如

eps = 1E-10
splot [1:150][1:150][] "dinozaur" u 5:6:((abs($4 - (0.4+0.0025*3)) < eps) ? $2 : 1/0)

应该工作。

最新更新