x 軸には、日付 %Y-%m-%d として時間が表示されます。y 軸には整数があります。
基本的に、各データ ポイントの日付範囲を設定します。通常は、目標日と両側に 2 週間のウィンドウを指定します。ウィンドウの下端と上端に垂直線を使用して、そのターゲット ウィンドウに相対的なデータ ポイントをプロットします。
ローエンドとハイエンドの間の領域をシェーディングしたいと思います。
「withfilledcurvesx1='2000-01-01'」を追加してみました
ありがとう
x 軸には、日付 %Y-%m-%d として時間が表示されます。y 軸には整数があります。
基本的に、各データ ポイントの日付範囲を設定します。通常は、目標日と両側に 2 週間のウィンドウを指定します。ウィンドウの下端と上端に垂直線を使用して、そのターゲット ウィンドウに相対的なデータ ポイントをプロットします。
ローエンドとハイエンドの間の領域をシェーディングしたいと思います。
「withfilledcurvesx1='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
各「レコード」の間に 2 つの空白スペースがあることに注意してください (トリプル スペース)。ファイルがトリプル スペースでない場合は、sed を使用して (gnuplot で) 簡単に行うことができます。
plot "< sed 'G;G' datafile.dat" ...
low-date と high-date が正確に 3600*24*14 (2 週間の秒数) 日付より低い/高い特別なケースでは、最後の 2 列をスキップして、次のようにプロットできます。
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
最初のパスは四角形を描画し、2 番目のパスは点を描画します。これは、ポイントが範囲の中央にあり、各範囲が正確に 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