我正在通过以每种文件处理潮汐数据来学习gnuplot:
2011/03/01 Tue 08:42 9.39 H
2011/03/01 Tue 15:04 0.2 L
2011/03/01 Tue 21:18 8.67 H
2011/03/02 Wed 03:16 0.71 L
2011/03/02 Wed 09:31 9.51 H
2011/03/02 Wed 15:49 0.09 L
2011/03/02 Wed 22:01 8.91 H
2011/03/03 Thu 04:01 0.48 L
2011/03/03 Thu 10:14 9.58 H
2011/03/03 Thu 16:28 0.05 L
2011/03/03 Thu 22:39 9.11 H
到目前为止一切都很好:我可以使用多色布局设置将叠加的图输出到PDF中,但我希望每周的图总是在周一到周日运行。
对于分数周,尤其是第一周,我该怎么做?我可以手动设置xrange,但是需要为每周的绘图命令重新完成。
我想弄清楚的是两件事:
设定:
gnuplot:版本4.4补丁级别2
OSX 10.6.6
设置&情节命令:
set timefmt "%Y/%m/%d-%H:%M"
set origin 0,0
set xdata time
unset key
set samples 1000
myDate(col1,col3)=sprintf("%s-%s",strcol(1),strcol(3))
set grid noxtics
set xtics nomirror font "Arial,10" tc rgb "blue"
set xtics offset 0,0 # required for position of tic labels when stacked.
set yrange [-3:13]
set ytics 3
set grid ytics back
set x2data time
set x2tics 86400
set grid x2tics back
set x2tics 86400
set format x2 "%d" # displays number of day of month
set x2tics offset 3.5,-3 font "Helvetica,20" # required for position of numbers when stacked.
#### set size 1,.2 # un-comment for setting up stacked layout.
set tmargin 3 # gives adequate room between each row of days + labels.
set lmargin 5
set bmargin 2
set rmargin 2
plot 'MonthlyTideDataMarch.txt' u (myDate(1,3)):4:xticlabels(strcol(4) . " \n" . strcol(3) ) lc rgb "green" lw 3 sm cspl notitle
答案 0 :(得分:0)
我会为此使用bash脚本并使用“date”程序。您可能需要调整日期格式等,但原则上;)这应该有用......
# write dates into a temporary file, create a date range
# for each line in your input file
echo -n ""> tmp.out
while read line; do
d=${line:0:22}
y=$(date --date "$d" +%Y)
w=$(date --date "$d" +%W)
M=$(date --date "$y-01-01 +$w weeks -1 week +2 day" +%Y-%m-%d)
S=$(date --date "$y-01-01 +$w weeks -1 week +8 day" +%Y-%m-%d)
echo '"'$M'":"'$S'"' >> tmp.out
done < data.txt
# make them unique
uniq tmp.out > dates.out
# create a gnuplot input file, needs your code from above
cat <<EOF > in.gnu
reset
EOF
# add a plot command for each date range.
# needs your plot command and perhaps more plot specific data (title, etc.)
while read line; do
cat <<EOF >>in.gnu
set xrange [$line]
plot "data.txt" u 1:2
EOF
done < dates.out
该脚本生成一个gnuplot输入文件,然后您可以对该数据运行。