在x軸上,我有時間作爲日期%Y-%m-%d。在y軸上我有整數。在Gnuplot中繪製兩個日期之間的填充區域
基本上,我有一個日期範圍爲每個數據點,通常由目標日期和任何一方兩個星期的窗口。我使用窗口的低端和高端的垂直線繪製數據點相對於目標窗口的圖形。
我想遮蔽低端和高端之間的區域。
我嘗試添加 「與filledcurves X1 = '2000-01-01'」
感謝
在x軸上,我有時間作爲日期%Y-%m-%d。在y軸上我有整數。在Gnuplot中繪製兩個日期之間的填充區域
基本上,我有一個日期範圍爲每個數據點,通常由目標日期和任何一方兩個星期的窗口。我使用窗口的低端和高端的垂直線繪製數據點相對於目標窗口的圖形。
我想遮蔽低端和高端之間的區域。
我嘗試添加 「與filledcurves X1 = '2000-01-01'」
感謝
我覺得你有幾個選擇這裏。如果只有你想畫,你可以使用一個長方形的幾個陰影區域(我想,這將工作 - 雖然我沒有測試過):
set xdata time
set timefmt '%Y-%m-%d'
set object rectangle from first '2000-01-01',graph 0 to first '2001-01-14',graph 1 fc rgb "red" solid back
另一種選擇是,你的格式你的數據文件是這樣的:
#date value low-date high-date
2000-01-12 12 2000-01-01 2000-01-26
2000-02-12 12 2000-02-01 2000-02-26
2000-03-12 12 2000-03-01 2000-03-26
注有每個「記錄」之間有兩個空格(三重間隔)。如果你的文件是不是三重間隔,您可以使用SED做到這一點很容易(在gnuplot的):
plot "< sed 'G;G' datafile.dat" ...
在低日期和高日期正是3600 * 24 * 14(數量的特殊情況在兩週秒)低於/高於日期,你可以跳過最後兩列繪製它是這樣的:
NPOINTS=3 #Number of points in datafile.
YHIGH=15
set xdata time
set timefmt '%Y-%m-%d'
set style fill solid .5 noborder #somewhat transparent -- see "help fillstyle"
set yrange [0:YHIGH]
plot for [I=0:NPOINTS-1] 'test.dat' i I u 1:(YHIGH):(3600*24*14*2) w boxes,\
for [I=0:NPOINTS-1] 'test.dat' i I u 1:2 w points ls I+1
第一遍繪製矩形,二傳繪製點。這隻適用於該點位於範圍的中心,每個範圍恰好爲3600 * 24 * 14秒(2周)。請注意,您必須將點數和YHIGH設置爲適用於您的數據的某個值。
如果範圍可能偏斜 - 例如,範圍不是集中在有問題的點上,你可以做這樣的事情:
NPOINTS=3
YHIGH=15
TIMEFMT='%Y-%m-%d'
set xdata time
set timefmt TIMEFMT
set style fill solid .5 noborder #somewhat transparent -- see "help fillstyle"
set yrange [0:YHIGH]
#difference between two times in seconds
boxwidth(s1,s2)=strptime(TIMEFMT,s1)-strptime(TIMEFMT,s2)
#average of two times -- number of seconds since 2000 epoch.
boxmidpoint(s1,s2)=(strptime(TIMEFMT,s1)+strptime(TIMEFMT,s2))/2
set macro #just to make it a little easier to read.
BOXARGS='stringcolumn(4),stringcolumn(3)'
plot for [I=0:NPOINTS-1] 'test.dat' i I u (boxmidpoint(@BOXARGS)):(YHIGH):(boxwidth(@BOXARGS)) w boxes,\
for [I=0:NPOINTS-1] 'test.dat' i I u 1:2 ls I+1
什麼是「低」和「高」兩端?兩週前意義低,兩週後意義重大?你是否試圖以每個1個月的間隔繪製不同顏色的條形圖? – mgilson
是的,有一個目標日期和低(兩週前)和高(兩週後)。現在我正在使用衝動畫出線條來標記低位和高位,並指出目標日期和X來指示實際事件發生的位置。這是一個[示例](http://i.imgur.com/YMkKY.png)。將垂直線之間的區域設置爲陰影很好,我想知道gnuplot是否具有日期/時間數據的這種功能。 – wtt