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など)
またスペースに関してはフォーマットに1つ書くと0個以上のスペースでも対応します。例えば「%M %S」というフォーマットにすると「1132」、「11 32」、「11 32」のいずれにも対応します。
インプット時の例
2014/04/26 : %Y/%m/%d2018年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 データ解析関連書籍など
コメント
コメントを投稿