我有一个文件,文件中的随机值介于 -256 到 +256 之间。每个条目都在一个新行中。我想用 y 轴上文件中的值绘制这个文件。我不知道执行 plot 命令时的条目数。有人知道有什么方法可以做到这一点吗?
1 回答
如果我理解正确,您的文件如下所示:
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 有很多...