尝试导出.png时终端中的垃圾邮件

时间:2012-06-16 05:01:19

标签: gnuplot

我有一个文件(名为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"

它在我的shell中提供了垃圾。我怀疑是造成这种情况的列之间的间距。但是,如果我更正间距,则正确绘制文件。有任何线索可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

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

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)你也有'print_1012720'没有'.txt'扩展名;我不确定这是你的错误。