91

我正在尝试使用 gnuplot 绘制图表。我有六个文本文件。每个文本文件包含两列。第一列以秒为单位表示时间(浮点数)。第二个是序列号。我想在一个图中为所有六个文件绘制时间与序列号的关系图。我正在使用这个文件来做到这一点。

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 行:未定义变量:绘图

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

4

3 回答 3

142

你这么近!

改变

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”的变量(这很好——那会非常混乱)。

于 2012-06-18T23:51:11.143 回答
78

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

例如

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
于 2014-01-27T23:06:03.477 回答
25

replot

这是一次获取多个图的另一种方法:

plot file1.data
replot file2.data
于 2015-10-08T17:21:36.623 回答