我正在 gnuplot 中绘制大量文件的创建时间,以查看它们是否按时间线性创建(它们不是)。
这是我的代码:
#!/bin/bash
stat -c %Y img2/*png > timedata
echo "set terminal postscript enhanced colour
set output 'file_creation_time.eps'
plot 'timedata'" | gnuplot
Run Code Online (Sandbox Code Playgroud)
我的问题是 y 数据是自 unix 开始时间以来的创建时间(以秒为单位),因此该图在 y 轴上只有 1.333...e+09。我想让第一个文件的创建时间缩放为零,以便相对创建时间是可读的。
我在许多数据绘图上下文中都遇到了这个问题,因此我希望能够在 gnuplot 中执行此操作,而不是诉诸 awk 或某些实用程序来预处理数据。
我知道第一次将是最小的,因为文件是按顺序命名的,所以有没有办法访问文件中的第一个元素,比如
`plot 'data' using ($1-$1[firstelement])`
Run Code Online (Sandbox Code Playgroud)
?
我认为你可以做这样的事情......(以下未经测试,但我认为它应该工作......)。基本上,您必须绘制文件两次——第一次通过 gnuplot 获取有关数据集的统计信息。第二次通过时,您使用在第一次运行中发现的内容来绘制您真正想要的内容。
set terminal unknown
plot 'datafile' using 1:2
set terminal post enh eps color
set output 'myfile.eps'
YMIN=GPVAL_Y_MIN
plot '' u 1:($2-YMIN)
Run Code Online (Sandbox Code Playgroud)
如果你有 gnuplot 4.6,你可以用这个stats命令做同样的事情。
http://www.gnuplot.info/demo/stats.html
编辑看来您希望第一点提供偏移量(抱歉,误读了问题)...
如果您希望第一个点提供偏移量,您可以执行以下操作(同样,未经测试 - 需要 gnuplot >= 4.3):
first=0;
offset=0;
func(x)=(offset=(first==0)?x:offset,first=1,x-offset)
plot 'datafile' using (func($1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5578 次 |
| 最近记录: |