繁体   English   中英

在Gnuplot中添加条件绘图会强制“该绘图中没有可用数据自动缩放轴范围”

[英]Addition in conditional plotting in Gnuplot forces “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)

应该管用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM