English 中文(简体)
在一周中的某一天开始绘图
原标题:Begin a plot on a specific day of the week
  • 时间:2011-02-13 16:23:41
  •  标签:
  • gnuplot

我正在通过每月文件中的潮汐数据学习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,但需要为每个每周的绘图命令重新设置。

我想弄清楚两件事:

  • a way to handle the first week problem;
  • a way to automate the xrange for each succeeding week (i.e., have gnuplot parse the timestamp and start a new plot each Monday? Can I perhaps do this using the ternary operator?)

Setup:
gnuplot: version 4.4 patchlevel 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) . " 
" . strcol(3) ) lc rgb "green" lw 3 sm cspl notitle
问题回答

我会为此使用bash脚本,并使用“日期”程序。您可能需要调整日期格式等,但原则上;)这应该有效。。。

# 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输入文件,然后可以在数据上运行该文件。





相关问题
Choosing line type and color in Gnuplot 4.0

I have two pairs of datasets, which I need to plot using Gnuplot. I want the first pair to be plotted in red, one solid and one dashed. The second pair, I want to plot in blue, one solid and one ...

Graph Formatting Tools For Octave

I know that Matlab allows for you to format the graph after its created through the interface. However there isn t the same features in Octave. Is there a tool that goes between Octave and GnuPlot? If ...

Labels on the input data in gnuplot

I have a datafile that looks like this #index name1 name2 name3 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 I want to plot 3 lines: plot "data" using 1:2 with lines, ... This works ok, except for the line ...

Drawing gant-like diagram from file in C with boxes and axis

I am programming system in C and I would like to draw rectangles into 2D plain with axis X and Y to represent generated data (scheduling problems).It should LOOK LIKE gant chart. Information are ...

Treat axis as date/time (epoch)

I m generating a graph with gnuplot of activity over the last twenty four hours, but the time axis looks really bad because it s trying to fit the long number for every five minutes in the last day. ...

Gnuplot Cumulative Column Question

I have some data. #Time Distance 1 3 2 5 4 9 8 11 12 17 14 20 16 34 20 40 I want to plot the cumulative distance wrt time in gnuplot ... (it should be easy) but I do not know how. x

Direct 2D gnuplot PNG animation?

Can anyone please confirm that yes/no Gnuplot 4.5 (on CVS) can output 2D animated PNG files? I have numerous datasets but one line that I d like to show iteratively in 3 different places in my graph. ...

热门标签