使用GNU绘图绘制文件中的数据列表

hRo*_*Rob 3 gnuplot

我有一个文件,文件中的随机值介于-256到+256之间。每个条目都在新行中。我想用y轴上的文件中的值绘制此文件。我不知道执行plot命令时的条目数。有人知道这样做吗?

mgi*_*son 5

如果我理解正确,则您的文件如下所示:

100
-120
248
10
-212
...
Run Code Online (Sandbox Code Playgroud)

(我使用了整数,但是浮点数可以很好地工作,即使像“ 1.e-5”这样的数字也可以)。

plot 'datafile.txt' using 1
Run Code Online (Sandbox Code Playgroud)

x值将从0开始,一直上升到文件中的行数。请参阅help datafile using以获取更多信息。

如果希望所有点都具有相同的x值,则可以执行以下操作:

plot 'datafile.txt' using (0.0):1
Run Code Online (Sandbox Code Playgroud)

您可能会收到有关x轴上零范围的警告(这不是问题-gnuplot做对了)。如果您真的想摆脱警告,请在绘制之前(或在绘制...时)设置xrange。

例如

set xrange [-1:1]
plot 'datafile.txt' using (0.0):1
Run Code Online (Sandbox Code Playgroud)

要么

plot [x=-1:1] 'datafile.txt' using (0.0):1
Run Code Online (Sandbox Code Playgroud)

编辑

根据您在下面的评论中所说的,正在运行gnuplot的脚本如下所示:

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' with dots # it shouldn't matter, but I always use a using statement just for clarity.
replot        # <--- a replot after a plot is probably not what you want here.
set output "delta-hy1-00000001-20120501-160221.929.raw.png"  #<-- Nothing will be written to this file...
Run Code Online (Sandbox Code Playgroud)

一些意见-首先,确定在绘制之前刷新/关闭输出文件(waveform.txt)和脚本文件(temp)吗?如果正在缓冲输出,那么当gnuplot读取这些文件时,这些文件之一就有空的可能性很大。接下来,在没有重置输出文件名的情况下进行绘图和重新绘图并不是(通常)您想要的。您想要达到什么目的?您可能想要:

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' using 1 with dots
set output "delta-hy1-00000001-20120501-160221.929.raw.png"
replot 
Run Code Online (Sandbox Code Playgroud)

尽管这将在两个不同的文件中生成相同的图。这两个不同文件的目的是什么?还有更多您未显示的内容吗?也许如果您粘贴文件的全部内容temp以及您要执行的操作的描述,我们可以为您提供更多帮助。(此外,您在此脚本中混合了引号-如果您是在c ++程序中编写脚本,则应检查以确保在创建temp时正确转义了引号)。

最后,您使用的是什么操作系统?我在Windows上没有使用过gnuplot的很多知识...