2015-10-28 47 views
0

我必須在gnuplot中繪製一個時間序列。我知道有一種格式化x軸來顯示日期的方法,但是我想繪製的文件必須在列時間中包含日期。例如,如果我不得不繪製此時間序列:如何在gnuplot中繪製時間系列?

TIME VAR 1 
01/01/79 -1.8351 
01/02/79 0.6315 
01/03/79 -1.3365 
01/04/79 2.1251 
01/05/79 -0.6708 
01/06/79 -3.3965 
01/07/79 -0.2298 
01/08/79 0.4807 
01/09/79 -2.4213 
01/10/79 -0.5998 
01/11/79 -1.0238 
01/12/79 -0.2025 
01/13/79 0.4362 
01/14/79 -1.1263 
01/15/79 3.3197 
01/16/79 0.0337 
01/17/79 -0.7374 

我會用這個命令行:set xdata timeset timefmt "%m%d%Y"和它完美的作品。但是,如何繪製時間序列的格式如下:

TIME VAR 1 
1 -1.8351 
2 0.6315 
3 -1.3365 
4 2.1251 
5 -0.6708 
6 -3.3965 
7 -0.2298 
8 0.4807 
9 -2.4213 
10 -0.5998 
11 -1.0238 
12 -0.2025 
13 0.4362 
14 -1.1263 
15 3.3197 
16 0.0337 
17 -0.7374 
18 1.1504 
19 -0.1656 
20 -0.4389 
21 1.4645 
22 1.6538 
23 1.6362 
24 -2.0363 
25 -4.9741 

,我想在X顯示軸1979至2014年的日期(顯然,我的TS較長)。可能嗎?

+1

你所需結果是不明確的。你想在x軸出現'1979'而不是'1'等等?這會導致很多混亂。也許你會更詳細地描述一下。 – vaettchen

+2

嘗試'plot [1969:1995] [ - 5:4]「so.dat」u($ 1 + 1969):2 w lp'作爲第一步('so.dat'是具有上述數據的文件)。 – vaettchen

+0

@vaettchen ...是的,這正是我想要的。我希望那些年代出現而不是時間。 '1979 - > 1; 1980-> 2' ....等等 – Erincon

回答

1

如果你想你的x軸來解釋和格式化的時間,你可以這樣做:

set xdata time       
set timefmt "%Y" 
set xtics rotate 
f(x)=sprintf("%d", x+1978) 
plot 'test' u (f($1)):2 w lp 

這給出了以下情節: enter image description here

編輯:如果數字在第一列代表從1/1979開始的幾個月(即1 = 01/1979,2 = 02/1979),函數f(x)和時間格式必須適當調整:

set xdata time       
set timefmt "%m-%Y" 
set xtics rotate 
f(x)=sprintf("%d-%d", int(x-1)%12+1, 1979+floor((x-1)/12)) 
plot 'test' u (f($1)):2 w lp ls 4 lw 3 

命令的上述順序輸出 enter image description here

+0

這正是我想要的。但是,日期應該是從1979年到2014年逐月,我的意思是每月的時間系列。如果我只想要這些年,那會是什麼命令? – Erincon

+1

要在x軸上格式化日期的表示形式,可以使用 'set format x「%d /%m /%y」'-command。如果你只有一年,可以使用'set format x'%y「'(最後兩位數字:79,80,...)或'set format x'%Y」'(對於四位數表示:1979,1980) –

+0

我有另一個問題。當我嘗試繪圖時,我的ts有423個步驟,它沒有繪製正確的日期。我的時間系列是每月,從1979年到2014年 – Erincon