4

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

4

1 回答 1

5

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

100
-120
248
10
-212
...

(我使用了整数,但浮点数可以正常工作......即使是像“1.e-5”这样的数字也可以)如果是这样的话,你可以很容易地绘制它:

plot 'datafile.txt' using 1

x 值将从 0 开始,直到文件中的行数。有关help datafile using更多信息,请参阅。

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

plot 'datafile.txt' using (0.0):1

您可能会收到关于 x 轴为零范围的警告(这不是问题——gnuplot 做了正确的事情)。如果您真的想摆脱警告,请在绘图之前(或在绘图时...)设置 xrange

例如

set xrange [-1:1]
plot 'datafile.txt' using (0.0):1

或者

plot [x=-1:1] 'datafile.txt' using (0.0):1

编辑

根据您在下面的评论中所说的,您运行 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...

一些评论 - 首先,您确定在绘图之前刷新/关闭输出文件(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 

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

最后,你在什么操作系统上?在我没有经验的 Windows 上使用 gnuplot 有很多...

于 2012-06-06T16:13:50.010 回答