用于加速计数据的gnuplot logscale

时间:2014-11-25 22:23:00

标签: gnuplot accelerometer

我需要将加速度计数据可视化,如下面的数据示例中所示。 问题在于绘制它们。我想在X轴上绘制时间,在Y轴上绘制数据。 我想使用set logscale y,但它给了我以下错误

all points y value undefined!

我知道log(0)没有定义,所以我应该如何绘制它们而不是只有直接线?

数据样本:

0|22:47:34:217|-0.0047238474|0.0045838584|0.98415303
1|22:47:34:262|-0.00637105|0.010124308|0.98600864
2|22:47:34:312|-0.009391699|0.003311515|0.9806735
3|22:47:34:413|-0.008783525|-0.0034095072|0.9833411
4|22:47:34:462|-0.0053864615|0.0046849614|0.97668225
5|22:47:34:514|-0.009480359|0.0068983412|0.97258836
6|22:47:34:614|-0.010723149|0.0060241884|0.9775938
7|22:47:34:665|-0.013596032|0.0063897152|0.9779593
8|22:47:34:715|-0.013596032|0.006778573|0.9858702
9|22:47:34:815|-0.012471455|0.0017731927|0.98302996

1 个答案:

答案 0 :(得分:0)

您也可以在最后一个之前绘制一个,因为它只有一个负值。

但是,根本不可能在对数刻度上绘制值< = 0。因此,您可以只绘制绝对值,但随后您将丢失符号信息。或者您可以像这样拆分它,在同一图中绘制正值和(绝对值)负值作为不同的曲线:

plot "data" using 2:($4>0?$4:NaN) title "positive",\
     "data" using 2:($4<0?-$4:NaN) title "negative"

另一种方法是不使用对数刻度,而是使用类似的可以处理负值的东西。例如。立方根也强调小值,可以为负值定义。 Gnuplot不能为你做到这一点,所以你必须在线性尺度上自己进行转换:

cbrt(x) = sgn(x) * abs(x)**(1.0/3.0)
plot "data" using 2:(cbrt($4)) 

不幸的是,轴现在不再显示实际值。有一些技巧,比如把你自己的刻度线放在正确的位置,或者(我认为从第5版开始)通过公式连接左右轴。

然而,第2列和第3列的较小值现在在( - )0.2的范围内,而第4列保持在约1.较高程度的奇数根可以实现更高的放大。