2013-02-13 76 views
1

我有一個數據文件,其中浮點時間列從零增加到某個較大值。每個時間點都與一個數據點相關聯。具有月份名稱的Gnuplot X軸

的時間點也正好對應個月,這樣0=Jan, 1=Feb, ..., 11=Dec, 12=Jan, 13=Feb, ...

我想繪製這個數據,我看到在X軸,而不是0-*月份名稱。

有沒有辦法做到這一點?

如果有幫助,我還可以預先生成數據中的月份名稱。

下面是示例數據,包括可能有幫助的月份名稱。

 
#Time Month Data 
0.01 Jan 0 
0.055 Jan 0 
0.2575 Jan 0 
1.1687 Feb 0 
1.9889 Feb 0 
3.1037 Apr 0.00065915 
3.2427 Apr 0.0035198 
4.0656 May 0.03785 
4.2134 May 0.041977 
5.0032 Jun 0.049293 
6.024 Jul 0.080957 
7.0317 Aug 0.34284 
7.9847 Aug 0.80902 
8.0081 Sep 0.8149 
8.9749 Sep 0.94009 
9.0316 Oct 0.94389 
9.9893 Oct 0.97967 
10.058 Nov 0.97967 
10.295 Nov 0.97967 
11.125 Dec 0.97967 
13.151 Feb 0.97967 
13.696 Feb 0.97967 
14.124 Mar 0.9797 
15.119 Apr 0.97733 
+0

我已經更新了我的答案 - 我認爲這是顯著更可用現在:) – mgilson 2013-02-13 13:37:10

+0

謝謝,@mgilson,它幾乎正是我需要的。 – Richard 2013-02-13 15:45:00

+0

沒問題。我看到你編輯了我的帖子。不同之處在於我期待你使用'stats',但你在那裏也應該工作(我實際上並不需要太多使用'stats',所以我沒有像大多數gnuplot的其他角落)。 – mgilson 2013-02-13 15:46:25

回答

3

我的第一個想法是嘗試與timefmt偷偷摸摸的事情,但不幸的是,這並不工作,因爲所有的月份是不一樣的長度,所以你實際上並沒有線性刻度在這裏。我想,你真的可以做的最好的是手動指定抽動:

set xtics ("Jan" 0.5, "Feb" 1.5, "Mar" 2.5, ...) 

此調整抽動,使它們的範圍爲中心。如果你不希望出現這種情況,則用整數值代替:

set xtics ("Jan" 0, "Feb" 1, "Mar" 2, ...) 

當然,你可以賺這點更靈活的使用這是在gnuplot的4.6引入了一個用於做循環:

MONTHS="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec" 
set xtics ("Jan" 0.5) #first one can't have `add`. 
do for [i=1:15] { 
    which_month = word(MONTHS,i%12+1) 
    pos = i+0.5 
    set xtics add (which_month pos) 
} 
plot 'test.dat' u 1:3 

你甚至可以通過stats命令望着STATS_max獲得上限爲您的循環 - (你可能會使用N = int(STATS_max+1)或類似的東西):

stats 'test.dat' u 1 nooutput #Runs stats on the file, generates STATS_max 

還有一個速記符號與gnuplot的4.4太作品:

MONTHS="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec" 
set xtics ("Jan" 0.5) 
set for [i=1:15] xtics add (word(MONTHS,i%12+1) i+0.5) 
plot 'test.dat' u 1:3