2016-12-24 112 views
4

我有以下數據集時間/日期處理5

0 22/01 5:40.416 07/01 5:59.149 
1 29/01 5:49.765 14/01 5:59.036 
2 05/02 5:45.675 21/01 5:52.160 
3 12/02 5:44.241 28/01 5:55.160 
4 19/02 5:49.330 04/02 5:44.065 
5 26/02 5:48.044 11/02 5:34.803 

和我要繪製柱3作爲爲4的函數的2(以及也5的功能,但是這不是問題)。格式是日/月和分鐘:seconds.xxx。

在gnuplot 4.6中,指出如何通過爲x和y設置不同的時間格式來指示如何讀取兩列,這有點直截了當。該工作的最小腳本:

set xdata time 
set timefmt x "%d/%m" 
set format x "%b" 

set ydata time 
set timefmt y "%M:%S" 
set format y "%M:%S" 

plot 'data.dat' using 2:3 

我最近升級到GNUPLOT 5和命令set timefmt x "%d/%m"(及其等價y)現在給出一個錯誤。看起來你不能把xy了,你只能使用一個timefmt整個腳本。

release notes狀態

使用時間格式,以產生軸刻度標籤現在由 set {xy}tics time而不是由set {xy}data time控制。因此, 之前調用set xdata timeset timefmt x對於 輸入或輸出都是不必要的。這些舊命令仍然有效,但不推薦使用 。

我有兩個問題。首先,儘管顯示「舊命令仍然有效」,但我在set timefmt x "%d/%m"上遇到錯誤。其次,也是最重要的,我無法弄清楚如何教gnuplot如何使用新命令讀取我的x和y列。

注:我已經從2011年見過this question,但我覺得它不夠優雅,我想保留現有格式的文件。

回答

4

他們對這個新版本的改進實際上使它更加靈活。您可以指定每個特定時間列的格式,而不是指定默認時間格式,然後要求您的列適合該格式。這樣你就不必一致,只要你指定每一列的格式即可。您還可以使用多於xy軸的時間格式。

在您引用的發行說明中提到了您的問題的解決方案,但它不能很好地解釋它。使用timecolumn(N,"timeformat")功能,如下所示:

set xtics time 
set format x "%b" 

set ytics time 
set format y "%M:%S" 

plot 'data.dat' using (timecolumn(2, "%d/%m")):(timecolumn(3, "%M:%S")) 

set timefmt線已換成這個新的兩個參數timefunction(),它允許您指定的格式爲using子句中的每一列。請注意圍繞timecolumn()()。這意味着你可以(如果你想)用時間值做一些數學運算。根據相同的5.0 release notes

時間座標內部存儲爲相對於標準UNIX時代1970年1月1日的秒數。早期版本的gnuplot在內部使用了不同的時期(1-Jan-2000)。此更改解決了外部生成時間(以秒爲單位)時引入的不一致問題。可以使用命令print strftime("%F",0)來確定特定gnuplot安裝使用的時代慣例。時間現在被存儲到至少毫秒的精確度。

通知的變化set xtics time。 xtics的輸出格式與您的示例中的輸出格式相同,並且與timecolumn()的第二個參數給出的輸入格式不同。你似乎比以前有更多的靈活性,但語法已經改變。