gnuplot:在单个图中绘制来自多个输入文件的数据

时间:2012-06-18 23:44:44

标签: gnuplot

我正在尝试使用gnuplot绘制图形。我有6个文本文件。每个文本文件包含两列。第一列表示以秒为单位的时间(它是一个浮点数).Second是序列号。我想要在一个图表中为所有六个文件绘制时间与序列号的关系图。我正在使用此文件来执行此操作。

set terminal png
set output 'akamai.png'

set xdata time
set timefmt "%S"
set xlabel "time"

set autoscale

set ylabel "highest seq number"
set format y "%s"

set title "seq number over time"
set key reverse Left outside
set grid

set style data linespoints

plot "print_1012720" using 1:2 title "Flow 1", \
plot "print_1058167" using 1:2 title "Flow 2", \
plot "print_193548"  using 1:2 title "Flow 3", \ 
plot "print_401125"  using 1:2 title "Flow 4", \
plot "print_401275"  using 1:2 title "Flow 5", \
plot "print_401276"  using 1:2 title "Flow 6"

我的档案在哪里:

  • print_1012720
  • print_1058167
  • print_193548
  • print_401125
  • print_401275
  • print_401276

它给出了一个奇怪的错误如下:

  

“plot.plt”,第24行:未定义的变量:plot

我做错了什么。是否可以在同一图表中绘制来自不同文件的输入数据。

3 个答案:

答案 0 :(得分:119)

你真是太近了!

变化:

plot "print_1012720" using 1:2 title "Flow 1", \
plot "print_1058167" using 1:2 title "Flow 2", \
plot "print_193548"  using 1:2 title "Flow 3", \ 
plot "print_401125"  using 1:2 title "Flow 4", \
plot "print_401275"  using 1:2 title "Flow 5", \
plot "print_401276"  using 1:2 title "Flow 6"

为:

plot "print_1012720" using 1:2 title "Flow 1", \
     "print_1058167" using 1:2 title "Flow 2", \
     "print_193548"  using 1:2 title "Flow 3", \ 
     "print_401125"  using 1:2 title "Flow 4", \
     "print_401275"  using 1:2 title "Flow 5", \
     "print_401276"  using 1:2 title "Flow 6"

错误是因为gnuplot试图将“plot”这个词解释为要绘制的文件名,但你还没有为名为“plot”的变量指定任何字符串(这很好 - 这将是非常令人困惑的)

答案 1 :(得分:64)

如果您适当调整文件名或图表标题,您可能会发现gnuplot的for循环在这种情况下很有用。

e.g。

filenames = "first second third fourth fifth"
plot for [file in filenames] file."dat" using 1:2 with lines

filename(n) = sprintf("file_%d", n)
plot for [i=1:10] filename(i) using 1:2 with lines

答案 2 :(得分:17)

replot 是另一种同时获得多个图的方法:

plot file1.data
replot file2.data