1099 re(3):日付、時間を取り扱うときにx, y軸に違う書式を使うには |
gnuplot-4.0 だと、timecolumn() が使えないので面倒そうですが、Unix
なら以下のような逃げはあります。
[1] 最初の日付だけ timefmt で取得し、後半は sed でスペース区切りの
2 つのデータに分けて利用する
set xdata time
set timefmt "%Y-%m-%d"
set format x "%d"
# y 軸の見出しは自前
set yrange [460:680]
set ytics ( "08:00" 480, "09:00" 540, "10:00" 600, "11:00" 660 )
plot "< sed 's/:/ /' test01.dat" using 1:($2*60+$3) w l
[2] いっそ、timefmt を利用せず全部自前にする
set yrange [460:680]
set ytics ( "08:00" 480, "09:00" 540, "10:00" 600, "11:00" 660 )
set xtics ( 11, 12, 13, 14, 15 )
plot "test01.dat" using 3:($4*60+$5) "%lf-%lf-%lf %lf:%lf" w l
ただ、[2] は月が変わると色々厄介です。なお、timefmt と using の
format 指定は共存できず (help using 参照)、入力形式は 1 種類しか指
定できません。
だから、[1] のように前処理を使うなら、いっそ次のような手もあります。
[3] awk で前処理させて、日付と時刻のデータに分けて読み込ませる
set xdata time
set timefmt "%Y-%m-%d %H:%M"
set format x "%d"
set ydata time
set format y "%H:%M"
set datafile separator ','
plot "< awk '{print $1,\"0:0,2000-01-01\",$2}' test01.dat" using 1:2 w l
これは plot 内部の awk の前処理部分で
2005-11-11 0:0,2000-01-01 09:00
のようなデータに変換して、gnuplot に読み込まさせています。
ちなみに、CVS 版 gnuplot-4.1 だと、よりスマートな解決策がとれます。
[4] CVS 版 gnuplot-4.1 の timecolumn() で gnuplot 内部表現に変換し
それを利用する
set xdata time
set timefmt "%Y-%m-%d %H:%M"
set format x "%d"
set ydata time
set format y "%H:%M"
f1(x) = (floor(timecolumn(x))%(24*60*60))
f2(x) = (floor(timecolumn(x))-f1(x))
plot "test01.dat" using (f2(1)):(f1(1))
[2],[4] はもちろん Unix 以外でも可です。
〔ツリー構成〕
【1096】 日付、時間を取り扱うときにx, y軸に違う書式を使うには 2005/11/11(金)09:23 ringo (590) |
┣【1097】 re(1):日付、時間を取り扱うときにx, y軸に違う書式を使うには 2005/11/11(金)20:27 竹の (287) |
┣【1098】 re(2):日付、時間を取り扱うときにx, y軸に違う書式を使うには 2005/11/12(土)16:18 ringo (182) |
┣【1099】 re(3):日付、時間を取り扱うときにx, y軸に違う書式を使うには 2005/11/12(土)18:01 竹の (1671) |
┣【1102】 re(4):日付、時間を取り扱うときにx, y軸に違う書式を使うには 2005/11/17(木)00:47 ringo (360) |
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.