つれづれなる備忘録

日々の発見をあるがままに綴る

gnuplotによるグラフ作成37~時刻取得関数

 今回はgnuplotで時刻を取得し、グラフ内に表示する方法について紹介する。

1. 時間取得関数

 関数timeは1970年1月1日からの経過時間を秒で返す関数で、グリニッチ標準時を基準にしている。引数を整数にすると整数値の秒数が返り、実数にすると実数の秒数が返ってくる。

print time(0)
1616969640
print time(0.)  
1616969643.64036

秒以外に時刻フォーマットを指定することで、西暦表示にすることができる。例えば、

print time("%Y/%m/%d %H:%M:%S")
>2021/03/28 22:18:49

表示される時刻はグリニッジ標準時なので9時間の時差がある。

2. 取得時間の補正

strftime関数は与えられた秒に対して時刻フォーマットを適用する関数で、秒と時刻フォーマットを引数とする。これを用いてtime()で取得した時刻(秒数)に9時間(9x3600秒)を加えることでグリニッジ標準時から日本標準時に変換することができる。

print strftime("%Y/%m/%d %H:%M:%S",time(0)+3600*9)  
>2021/03/29 07:33:41

3. 時刻表示の応用

 あまり有用ではないかもしれないが、現在時刻を取得してプロットすることができる。以下は現在時刻をタイトルに設定する場合のコードと実行例を示す。

set title strftime("%Y/%m/%d %H:%M:%S",time(0)+3600*9)  
plot x**2

strftime関数は返り値が文字なので、タイトルに限らず注釈に用いることもできる。

"現在時刻をタイトルに設定"
現在時刻をタイトルに設定

set label 1 at first 5, 10 strftime("%Y/%m/%d %H:%M:%S",time(0)+3600*9) 
unset title
set title "Square plot"
replot

グラフ中に注釈としてプロットした時刻を入れることができる。

"現在時刻を注釈に設定"
現在時刻を注釈に設定

4. まとめ

 今回はgnuplotで時刻を取得し、グラフ内に表示する方法について紹介した。