使用管道输入进行gnuplot绘图

时间:2015-10-31 23:35:24

标签: pipe gnuplot piping

我想将数据传输到gnuplot并绘制它,而无需输入gnuplot命令行或提供现有的脚本文件。例如dim UserID = 10 dim UserResult = GetUser(10) if UserResult.Success then rem apply business logic to UserResult.Value else rem apply business logic to UserResult.Error end if 之类的单行,并看到情节出现。假设数据文件格式正确,例如由制表符或空格分隔的两个简单的数字数据列。

即使它会起作用(它没有),它会立即关闭,但这可以通过-persist选项(缩写为-p)来解决。

基本上我希望以下代码行能够工作,或者理解它为什么不能以及如何将其修改为有效:cat datafile | gnuplot

我可以使用-e选项获得一些工作,但是一旦我开始制作更复杂的绘图命令并且我不完全理解该选项正在做什么,这似乎常常让我失望,所以我宁愿简单地写一下如上所述,使用heredoc的短脚本文件。这有效:echo -e "1 3\n2 4\n3 5" | gnuplot -p <<< "plot '-'"

为什么即使使用echo -e "1 3\n2 4\n3 5" | gnuplot -p -e "plot '-'"语法请求该绘图从stdin获取数据,通过管道输入gnuplot的列数据也只是简单绘制?

1 个答案:

答案 0 :(得分:0)

您希望将2个不同的流传输到gnuplot:数据和绘图命令。 Gnuplot只需一个。那么为什么不简单地连接绘图命令和数据呢?

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

然后cat file | gnuplot -p

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