2012-06-06 87 views
3

我有一个文件,其文件中的随机值在-256到+256之间。每个条目都在一个新的行中。我想用y轴上的文件中的值绘制该文件。我不知道执行plot命令时的条目数量。任何人都知道有什么办法做到这一点?使用GNU绘图绘制文件中的数据列表

回答

4

如果我理解正确的话,你的文件看起来是这样的:

100 
-120 
248 
10 
-212 
... 

(我用的整数,而浮点数会工作得很好......偶数像“1.E-5 “都OK)。如果是这样的话,你真的可以轻松地绘制它:

plot 'datafile.txt' using 1 

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

如果你想所有的点具有相同的x值,你可以做这样的事情:

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

你可能会得到一个警告约零点范围在x轴(其中ISN”问题 - gnuplot做了正确的事情)。如果您真的想在绘图之前摆脱警告(或绘制...)

例如,

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... 

一一些评论 - 首先,你确定你冲洗/关闭你的输出t文件(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时正确地避免了引号)。

最后,你在什么操作系统?有很多关于使用上,我有...

+0

喜mgilson没有经验窗户gnuplot的..是的,那就是我想要做的东西..但基本上我看到我怎么能无需进入gnuplot的环境绘制,如果我作出任何意义..所以基本上笏我所做的就是创建一个名为临时文件它具有FOLL: 集终端PNG 组输出“波形hy1-00000001-20120501-160221.929.raw.png” 情节“波形。TXT”与点 重绘 组输出‘Δ-hy1-00000001-20120501-160221.929.raw.png’ 情节‘delta.txt’与点 重制从我的C++代码中 然后我把这种与系统调用像这样: 系统(“gnuplot temp”); 但这是由于某种原因不工作..不知道为什么 – hRob

+0

@ hRob - 我编辑了一些建议。如果建议不起作用,我会建议您在StackOverflow上打开另一个问题。每个问题都应该是独立的,对问题有很好的描述(“由于某种原因,这不起作用”太含糊)。 *什么*不起作用。 *你期望会发生什么,发生了什么*。在这里提问的部分技巧是找出问题出在哪里(例如gnuplot脚本或C++接口?),然后进行一个简单的测试,以便我们可以解决问题。祝你好运。 – mgilson