使用stdin中的gnuplot脚本绘制多个数据集

时间:2016-01-25 13:13:33

标签: gnuplot stdin

我试图用gnuplot绘制一些数据。我想使用静态script.gp文件并从stdin中提取我的数据。我还有多个数据集需要传递给脚本。

script.gp:

set term jpeg
set encoding utf8
plot '<cat' index 0 with lines, plot '' index 1 with lines   

数据:

1 2
2 2


0 0
7 4

命令:

cat data | gnuplot script.gp

这不起作用,因为我猜它试图从stdin重新读取。有没有办法可以做到这一点,还是我必须使用临时文件来存储我的数据?

2 个答案:

答案 0 :(得分:2)

到目前为止,我发现的解决方案有很多缺点,但它有点起作用:
使用&#39; gnuplot -e&#39;并将脚本文件写入命令:

cat data | gnuplot -e "$(cat script.gp)"

使用每行末尾的;更改script.gp,删除所有注释并使用'-'代替'<cat'更改绘图命令并删除index:< / p>

set term jpeg;
set encoding utf8;
plot '-' with lines, '-' with lines

更改数据格式,使用e

分隔每个数据集
1 2
2 2
e
0 0
7 4

答案 1 :(得分:0)

我建议使用特殊文件'&lt;'它允许你调用php脚本,你可以使用你的gnuplot文件plot.gp

set term jpeg;
set encoding utf8;
set output file_out

my_cmd1=sprintf('< my_script %s', my_file1)
my_cmd2=sprintf('< my_script %s', my_file2)
plot my_cmd1 with lines, my_cmd2 with lines

你打电话给shell:

gnuplot -e 'my_file1="input1.txt"; my_file2="input2.txt"; file_out="my_out.jpg"' plot.gp