日の変化を時間単位のタイムスケールで X 軸にプロットする方法はありますか?
-
25-09-2019 - |
質問
gnuplot を使用して時間依存データをプロットしています。
サンプルは 5 分ごとに採取され、200 個のサンプルがあります。
これらを、次のようにフォーマットされた X 軸でプロットします。
set format x "%H:%M"
理想的には、X 軸が午前 0 時を横切るたびに日付を印刷したいのですが...しかし のみ 真夜中を越えたとき。何かのようなもの:
22:00 22:30 23:00 23:30 00:00 00:30 01:00
2010-11-17
これを行う方法を知っている gnuplot の専門家はいますか?
解決
良い質問ですね。
以下に基づいています t16web.lanl.gov/Kawano/gnuplot/plot4-e.html#5.12。
基本的に、各軸に対して 1 回ずつ、計 2 回データをプロットする必要があります。2 回目にデータをプロットするときは、(1000 を減算して) 実際のプロットを範囲外に移動し、プロットが 1 つだけ描画されるようにします。次のシェル スクリプトはデータを生成し、以下のグラフのようにプロットします。
これがあなたが望むものであることを願っています。
#!/bin/bash
echo "2010-11-17 13:30:01,1
2010-11-17 13:30:12,3.1
2010-11-18 13:30:23,2.1
2010-11-19 13:30:34,4" > two_axis.dat
gnuplot<<EOF
## Plot a second axis with the day rather than the time
## Based on example from http://t16web.lanl.gov/Kawano/gnuplot/plot4-e.html#5.12.
## make a png file
set term png small
set output "two_axis.png"
## reduce the size of the main plot to allow for second axis
set size 1.0,0.8
set bmargin 0
set lmargin 3 # set space given to axis
## The data for the second plot will be set to be out of range,
## Need to explicitly set range here.
set yrange [0:5]
set multiplot
## Main plot, raised slightly
set origin 0,0.2
set datafile separator ","
set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%H:%M"
## Need to set xrange so that the axes of the two plots match exactly
set xrange["2010-11-17 12:00:00":"2010-11-19 14:00:00"]
## The main plot!
plot "./two_axis.dat" using 1:2 with lines
## Now want to draw second axis with just the days
set origin 0,0.1
## Dont want any ytics or minor xtics or drawn axes
set noytics
unset mxtics
unset border
## Don't want axis mirrored, want tick scales to zero so that it vanishes,
## And some format for the days of the week axis
set xtics nomirror scale 0 format "%Y-%m-%d"
## Specify the tics interval in seconds 1 day = 86400 seconds
set xtics "2010-11-01 00:00:00", 86400, "2010-12-01 00:00:00"
## Replot the graph but this time with the data shifted out of the way,
## we don't want to replot the data (difficult to align with previous plot) -
## we just want the axis
plot "./two_axis.dat" using 1:(\$2-1000) with lines notitle
## clean up
unset multiplot
set output
set term pop
EOF
ではごきげんよう、
トム
所属していません StackOverflow