gnuplot v4.4:使用时间序列x轴绘制问题

1 gnuplot

有人可以帮助我.我正在尝试创建一个简单的图表.

set datafile separator ","
set xdata time   
set timefmt "%d/%m/%Y %H:%M:%S" 
set format x "%H:%M" 
set autoscale y
plot ["13:00":"14:00"] './data.csv' using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)

data.csv:

26/10/2010 13:30:01,1

26/10/2010 13:30:12,2

26/10/2010 13:30:23,3

26/10/2010 13:30:34,4
Run Code Online (Sandbox Code Playgroud)

给我错误:

line 6: all points y value undefined!
Run Code Online (Sandbox Code Playgroud)

我已经尝试过timefmt设置的所有方式!

非常感谢

Tom*_*Tom 7

问题是定义xrange,它需要是相同的格式timefmt(参见?time_axis)

以下适用于我

set datafile separator "," 
set xdata time
set timefmt "%d/%m/%Y %H:%M:%S" 
set format x "%H:%M" 
set autoscale y 
set xrange["26/10/2010 13:00:00":"26/10/2010 14:00:00"]
plot './data.csv' using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)

哦,我摆脱了每行数据之间的空白行.

如果您不想编辑文件以删除空白数据,那么您可以在gnuplot中使用awk,如下所示,

plot "<awk '$0!~/^$/ {print $0}' ./data.csv" using 1:2 with lines
Run Code Online (Sandbox Code Playgroud)

为最后的命令.

编辑:进一步的信息,以防仍有问题(见评论)

我需要使用awk命令来绘制数据.这是为了删除数据中的空白行.以这种方式组合awk和gnuplot在linux系统上工作,我不确定windows上的gnuplot.可能是某些管道没有发生,在这种情况下,您必须在使用gnuplot之前删除空行.(你仍然可以使用awk,但也许不在plot命令中?)

如果您使用的是Linux,而上述功能不起作用,那么问题就出现了.也许在gnuplot会话中存储了旧命令?为了确保我们做的完全相同,我给出了我使用的shell脚本(我更改了xrange以更好地适应数据并制作更好的情节,同时注意到$ $而不是$,否则shell会误解$标志).

好的:我把文件data.csv.sh放在一个新文件夹中(如果你已经有data.csv或data.csv.png文件了):

#!/bin/bash

echo "26/10/2010 13:30:01,1

26/10/2010 13:30:12,2

26/10/2010 13:30:23,3

26/10/2010 13:30:34,4" > "data.csv"


gnuplot<<EOF
set term png small
set output "data.csv.png"
set datafile separator "," 
set xdata time
set timefmt "%d/%m/%Y %H:%M:%S" 
set format x "%H:%M" 
set autoscale y 
set xrange["26/10/2010 13:30:00":"26/10/2010 13:31:00"]
plot "<awk '\$0!~/^\$/ {print \$0}' ./data.csv" using 1:2 with lines
set output
set term pop
EOF 
Run Code Online (Sandbox Code Playgroud)

然后在终端上输入:

chmod +wrx data.csv.sh && ./data.csv.sh
Run Code Online (Sandbox Code Playgroud)

使shell脚本可执行,然后运行它.

文件data.csv.png如下所示 替代文字

祝一切顺利

汤姆