2015-10-31 41 views
3

我想将数据流入gnuplot并绘制它,而不需要输入gnuplot命令行或提供现有的脚本文件。例如,如cat datafile | gnuplot等单线,并看到情节出现。假设数据文件格式良好,例如由制表符或空格分隔的两个简单的数字数据列。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 '-'语法来请求该绘图从标准输入中获取数据?

+0

'-e'告诉gnuplot执行下面的代码。这很简单。我不明白你的实际问题是什么:你有一个工作片段。 – Christoph

+0

我不想依赖-e选项,这就是主意。我宁愿只使用一个实际的脚本文件,但是以一个heredocument的形式。然后代码应该从heredoc gnuplot命令执行,而不是从-e;但这不起作用。这是我想要了解并开展工作。感谢 –

+0

事实上,问题是我想了解如何在将脚本作为heredoc喂食时如何管理数据。例如下面的例子''gnuplot -p <<< script',但是当数据像下面这样输入时,它会失败'cat data | gnuplot -p <<< script'。有没有办法同时使用heredoc脚本和管道数据? –

回答

0

你想管2个不同的流到gnuplot:数据和绘图命令。 Gnuplot只需要一个。那么为什么不简单地连接绘图命令和数据呢?

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

然后cat file | gnuplot -p

如果它们是gnuplot变量而不是shell变量,请记住要转义$个字符。