gnuplot:有故障的传感器有时读数为 0.00 - 如何将它们转换为丢失?

Posted

技术标签:

【中文标题】gnuplot:有故障的传感器有时读数为 0.00 - 如何将它们转换为丢失?【英文标题】:gnuplot: Faulty sensor sometimes reading 0.00 - how to convert them to missing? 【发布时间】:2017-05-16 00:04:38 【问题描述】:

我有一个组合 RPi/Arduino 从几个 DHT-22 湿度/温度传感器读取读数。

其中一个传感器出现松动的电线,并且连续 10-20 分钟偶尔会给出 0.00 的温度读数。由于同时收集的其他数据,我真的无法选择删除整行数据,就像它是唯一被记录的传感器一样。现在电线已经修好了。

所以我的问题是,我可以在 gnuplot 代码中做一些事情来将这些 0.00 值视为情节中缺少的值,以便它可以忽略它们吗?

【问题讨论】:

set datafile missing "0.00" 【参考方案1】:

Gnuplot 允许您在绘图时过滤数据:

gnuplot 'file.dat' using 1:($2 == 0.0 ? 1/0 : $2)

这会将0 的所有值视为无效点并跳过这些点。取决于所选的绘图样式是否有效:plot ... with lines 在无效点中断线。

从 gnuplot 5.0.6 版开始,您可以使用 set datafile missing NaN 将无效点视为缺失点,并且一行会简单地忽略这些点:

$data <<EOD
12
27
0
23
42
EOD

set multiplot layout 1,2

set title '0.0 invalid'
plot $data using 0:($1 == 0.0 ? 1/0 : $1) with linespoints pt 7 notitle

set title '0.0 invalid but treated as missing'
set datafile missing NaN
replot

unset multiplot

5.0.6 的输出:

【讨论】:

以上是关于gnuplot:有故障的传感器有时读数为 0.00 - 如何将它们转换为丢失?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python Matplotlib 在 3D 轴上为振动传感器读数创建动画散点图

gnuplot 如何从文件读取数据

使用 XMPP - PEP/PubSub 获取传感器读数

Android 加速度计在 z 轴上读数为 0 而没有变化

Web Worker 中的传感器读数

使用卡尔曼滤波器整合传感器数据