2010-11-12 63 views
1

可能有人请帮我策划的问题。我正在尝试创建一个简单的图表。gnuplot的V4.4:使用时间序列x轴

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 

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 

给我的错误:

line 6: all points y value undefined! 

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

非常感谢

回答

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 

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

如果你不想编辑文件摆脱空白数据,那么您可以在gnuplot的为最后的命令用awk像这样,

plot "<awk '$0!~/^$/ {print $0}' ./data.csv" using 1:2 with lines 

编辑:进一步信息的情况下,仍然有一个问题(见注释)

我需要使用awk命令的数据得到的情节。这是为了删除数据中的空白行。以这种方式组合awk和gnuplot可以在linux系统上工作,我不确定在Windows上使用gnuplot。这可能是某些管道没有发生,在这种情况下,您必须在使用gnuplot之前删除空行。如果你正在使用Linux和上面的不工作,然后还有其他事情是问题(你仍然可以用awk这一点,但也许不是在绘图命令?)

。也许在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 

然后在terminal I输入:

chmod +wrx data.csv.sh && ./data.csv.sh 

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

文件data.csv.png如下所示alt text

所有最优秀的

汤姆

+0

非常感谢您的帮助汤姆。现在我得到一个具有良好x和y轴的图表,但没有绘制任何数据点。我玩过数据和“使用”条款无效! – Tony 2010-11-12 17:07:10

+0

@Tony这很奇怪,你使用了“ Tom 2010-11-12 18:33:46

1

我只是想补充上面的讨论,以防有人有同样的问题。我试图绘制时间序列,如:

13年7月22日01:00 120

当我试图使用上述程序,我得到了不好的时候格式错误绘制。我改变了我的输入数据:

2013年7月22日01:00 120

变更后,它完美地运行。这是有道理的,因为gnuplot 2013年7月22日是模糊的。也就是说,是1913年,1813年还是2013年(或其他任何年份)。