Gnuplotでは、タイムスタンプ付きの値をプロットしています。データは次のようになります。
2019-06-01 18:23:56, 508.56
2019-06-07 18:23:56, 508.56
2019-06-08 13:00:00, 492.95
...
xticsラベルの密度が高くなりすぎないようにするため、2週間ごとにのみ印刷します。
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set xtics format "%m/%d"
set xtics 3600*24*15
unset mxtics
それは機能し、ラベルは2週間間隔ですが、月の初めにうまく調整されていません。私が見るxticsラベルは次のとおりです:06 / 13、06 / 28、07 / 13など。月の初日からラベル付けを開始し、次に月の15日などから開始したいと思います。実際のデータは2019年から始まります。 -06-07。2019-06-01(上記を参照)の偽の最初のエントリを追加しましたが、同じラベル付けシーケンス(06 / 13、06 / 28など)を取得します。データファイルで「xticslabels」を手動で指定せずに、最初のxticsポイントをどこに配置するか(06/01または06/15)を設定する方法はありますか?
毎月最初に出現する「01」または「15」のフィルタリング関数を定義することで、自分でチックを設定できますNaN
。
編集:テストデータが変更され、一部の月は30日、一部は31日、2020年2月は29日であることが示されました。
Edit2:コメント後にコードが改訂されました。
コード:
### Fixed time step "xtics" on 01 and 15 of each month
reset session
myTimeFmt = "%Y-%m-%d %H:%M:%S"
# create some test data
set samples 181
set table $Data
plot [0:1] '+' u (a=strftime(myTimeFmt, time(0)+$1*3600*24*180)):(a[9:10]) w table
unset table
set grid xtics, ytics
flag=0
myTic(s) = (s[9:10] eq "01") && (flag==0 || flag==15) ? \
(flag=1, strftime("%m/%d",strptime(myTimeFmt,s))) : \
(s[9:10] eq "15") && (flag==0 || flag==1) ? \
(flag=15, strftime("%m/%d",strptime(myTimeFmt,s))) : NaN
set xdata time
set timefmt myTimeFmt
set xrange["2019-10-01":"2020-04-30"]
plot $Data u (timecolumn(1,myTimeFmt)):3: \
xtic(myTic(strftime(myTimeFmt,timecolumn(1,myTimeFmt)))) w lp pt 7 notitle, \
### end of code
結果:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加