2010-11-12 32 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年(或其他任何年份)。