gnuplotの日時データ扱いのフォーマット

始めに

以前のブログ記事でgnuplotでの日時データの基本の扱いを解説しました。
そこで
gnuplot> set timefmt "%m/%d %H:%M"
gnuplot> set format x "%H:%M"

のように日時を扱うフォーマットを書いたので、今回はそのフォーマットの解説をしていきます。
なお、話としてはgnuplotのバージョン5.2についてなので、他のバージョンでは扱いが異なるかも知れません。またドキュメントやヘルプにはより詳しいフォーマットの取り扱いが書かれています。

日時フォーマット

日時フォーマットですが、データのインプット(set timefmt)の時に指定出来るものとグラフとしてアウトプット(set format)する時に指定出来るものは分かれているようです(とは言ってもインプットに指定出来ないものは少しだけで、だいたいは同じ指定が出来ます)。

インプット(set timefmt)のフォーマット

データのインプットの時に指定出来るフォーマットは以下のようになっています。
  • %y : 年(0-99) (1969-2068の間のみ)
  • %Y : 年(4桁)
  • %m : 月(1-12)
  • %d : 日付(1-31)
  • %j : 年の日数
  • %H : 時(0-23)
  • %M : 分(0-60)
  • %S : 秒数(0-60)
  • %s : 1970年(Unix epoch)からの秒数
  • %b : 月の短縮形(Novなど)
  • %B : 月の名前(Novemberなど)
タブは「\t」記号で認識されます。また日時に区切りが無い場合(16時20分を1620と書いてある場合など)では基本的に2桁ずつ値が読み込まれます(%d, %m, %y, %H, %M, %S)。
またスペースに関してはフォーマットに1つ書くと0個以上のスペースでも対応します。例えば「%M %S」というフォーマットにすると「1132」、「11 32」、「11    32」のいずれにも対応します。

インプット時の例

2014/04/26 : %Y/%m/%d
2018年11月14日 : %Y年%m月%d日
11:30:21 : %H:%M:%S


アウトプット(set format)のフォーマット

  • %D : "%m/%d/%y" (アウトプット時のみ) (11/12/18)
  • %F : "%Y-%m-%d" (アウトプット時のみ) (2018-11-12)
  • %r : "%I:%M:%S %p" (アウトプット時のみ) (09:58:31 am)
  • %T : "%H:%M:%S" (アウトプット時のみ) (09:54:47)
  • %R : "%H:%M" (09:56)
  • %y : 年(0-99) (1969-2068の間のみ)
  • %Y : 年(4桁)
  • %m : 月(01-12)
  • %d : 日付(01-31)
  • %H : 時(00-23)
  • %k : 時(0-23)
  • %I : 時(01-12)
  • %l : 時(1-12)
  • %M : 分(00-60)
  • %S : 秒数(00-60)
  • %p : "am"または"pm"
  • %A : 曜日 (Monday)
  • %a : 曜日の短縮形 (Mon)
  • %w : 日曜を0とした場合の曜日の番号
  • %U : 年の週数 (日曜始まり)
  • %W : 年の週数 (月曜始まり)
  • %b : 月の短縮形 (Nov)
  • %h : 月の短縮形 (Nov)
  • %B : 月の名前 (November)
  • %j : 年の日数
  • %s : 1970年(Unix epock)からの秒数

例 %m月%d日の場合

さて、以前のブログ記事にも書いたのですが、gnuplotはインタラクティブモードでは日本語の扱いにやや難があります。
そこで「11月10日」のような日付データのデータファイルを指定したい場合、インタラクティブモードではなく、bashなどシェルのコマンドラインから
gnuplot -p -e 'set xdata time; set timefmt "%m月%d日"; set format x "%m月%d日";plot "testdata.dat" using 1:2 w lp'
とすることでも日本語を認識させてグラフを描くことが出来ます。他にも方法はあるので、いろいろ試してみて下さい。


その他、gnuplot関連のブログ記事


Amazon データ解析関連書籍など

コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

gnuplot : グラフにグリッド線を描く方法(set grid)