使用管道输入进行gnuplot绘图

3
我希望能够将数据输入gnuplot并绘制图形,而不必进入gnuplot命令行或提供现有的脚本文件。例如,使用一个一行代码 cat datafile | gnuplot 即可看到绘图结果。假设数据文件格式良好,例如两列数字数据由制表符或空格分隔。
这样做会立即关闭,即使它可以工作(实际上它不能),但可以通过-persist选项(缩写为-p)解决这个问题。
基本上,我希望以下代码行起作用,或者了解为什么它不起作用以及如何修改它以使其起作用:echo -e "1 3\n2 4\n3 5" | gnuplot -p <<< "plot '-'" 我可以使用-e选项让某些东西起作用,但是一旦我开始使用更复杂的绘图命令,这似乎经常出问题,而且我不完全理解该选项正在做什么,因此我更喜欢使用heredoc编写一个简短的脚本文件,如上所述。这个可以工作:echo -e "1 3\n2 4\n3 5" | gnuplot -p -e "plot '-'" 为什么将输入管道传递到gnuplot中的列数据不会简单地绘制图形,即使使用plot '-'语法从stdin请求plot获取数据?

“-e” 告诉 gnuplot 执行以下代码。就这么简单。我不明白你的实际问题是什么:你有一个可用的片段。 - Christoph
我不想依赖于-e选项,这就是我的想法。我宁愿使用一个实际的脚本文件,但是以heredocument的形式。然后代码应该从heredoc gnuplot命令执行,而不是从-e执行;但是这并不起作用。这就是我想要理解和使其工作的内容。谢谢。 - Daniel Naftalovich
实际上问题在于我正在尝试理解如何在将脚本作为heredoc输入时进行数据管道传输。例如,以下命令可以正常工作:gnuplot -p <<< script,但是当同时传输数据时,如下所示,则会失败:cat data | gnuplot -p <<< script。是否有一种方法可以同时使用heredoc脚本和管道传输数据? - Daniel Naftalovich
创建别名或函数,类似 alias gp="gnuplot -p -e \"plot '-'\" "。然后您可以使用它,如 cat 'data.dat' | gp。或者,您可以创建一个 gnuplot 脚本并将其放置在 /usr/bin//usr/local/bin/ 中。 - vagoberto
1个回答

0

你想将两个不同的流传输到gnuplot:数据和绘图命令。Gnuplot只接受一个。那么为什么不简单地连接绘图命令和数据呢?

cat > file << .
plot '-' using (\$1):(\$2)
1 2
2 3
3 4
e
.

然后执行 cat file | gnuplot -p 命令。

如果 $ 是 gnuplot 变量而不是 shell 变量,记得进行转义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接