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 データ解析関連書籍など

コメント

スポンサーリンク


このブログの人気の投稿

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

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

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

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

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