0

我有一个文件(称为print_1012720.txt),看起来像下面显示的文本。

1133254688 5698771509078629376
1150031904 5698771509371165696
1150031904 5698771510035551232
4170258464 5698771510036082688
2895583264 5698771510036715520
1620908064 5698771510037202176
346232864 5698771510037665280  <----
3366459424 5698771510038193664
2091784224 5698771510332259072
817109024 5698771510332816128  <-----
3837335584 5698771510333344512
2562660384 5698771510339882240
1287985184 5698771510340411392
13309984 5698771510340939776 <-------
3033536544 5698771510348048896
1758861344 5698771510348577280
484186144 5698771510349228800
3504412704 5698771510632804864
2229737504 5698771510633441792
955062304 5698771510634390272
3975288864 5698771510638858496
2700613664 5698771510639347712
1425938464 5698771510642663168
134486304 5698771510643387136
3154712864 5698771510643808768

我在 bash 中运行以下命令。

gnuplot

reset
set terminal png

set xdata time
set timefmt "%d/%m/%Y %H:%M:%S"
set format x "%H:%M"
set xlabel "time"

set ylabel "highest seq number"
set yrange [0:65535]

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"

它在我的外壳中产生垃圾。我怀疑这是导致这种情况的列之间的间距。但是,如果我更正间距,则文件被正确绘制。任何线索如何纠正?

4

1 回答 1

1

我怀疑您的主要问题是您没有设置输出。在你的set terminal命令之后,你应该设置一个输出文件,否则 gnuplot 会将 .png 吐出到你的终端,这看起来像乱码。尝试将以下内容放入文件中(例如保存为“plot.plt”),然后gnuplot plot.plt在 bash 命令行中运行。

set terminal png 
set output 'output.png'

set xdata time
set timefmt "%s"
set format x "%H:%M"
set xlabel "time"

set ylabel "highest seq number"

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

set style data linespoints

plot "print_1012720.txt" using 1:2 title "Flow 1"

以这种方式创建绘图文件将为您节省大量在 gnuplot 命令行中输入的时间。

其他一些评论:

1)当数据文件中的 y 值更大时,您将 yrange 设置为 0:65535。

2) 看起来您正试图从数据文件的第一列中提取 UNIX 格式的时间。为此,您需要set timefmt '%s'我上面的那条线。但是,数据文件中的时间数据似乎无处不在,y 数据也是如此。

3) 一开始不需要这个reset命令,因为这样运行 gnuplot 会创建一个新的 gnuplot 实例,所以没有什么需要重置的。

4) 你也有没有'.txt'扩展名的'print_1012720';我不确定这是您的错误。

于 2012-06-16T05:38:29.080 回答