我有一个python脚本,经过一些计算后,它将生成两个格式化为gnuplot输入的数据文件。
如何从python中“调用”gnuplot?
我想将以下python字符串作为输入发送到gnuplot:
"plot '%s' with lines, '%s' with points;" % (eout,nout)
其中'eout‘和'nout’是两个文件名。
PS:我更喜欢不使用额外的python模块(例如.gnuplot-py),只有标准的API。
谢谢
发布于 2010-01-29 21:11:02
一种简单的方法可能是只编写包含gnuplot命令的第三个文件,然后告诉Python使用该文件执行gnuplot。假设你写了
"plot '%s' with lines, '%s' with points;" % (eout,nout)
添加到名为tmp.gp的文件中。然后你就可以使用
from os import system, remove
system('gnuplot -persist tmp.gp')
remove('tmp.gp')
发布于 2010-01-29 20:48:52
subprocess
模块允许您调用其他程序:
import subprocess
plot = subprocess.Popen(['gnuplot'], stdin=subprocess.PIPE)
plot.communicate("plot '%s' with lines, '%s' with points;" % (eout,nout))
发布于 2011-02-15 18:43:21
子过程在Doug Hellemann的Python Module of the Week中解释得非常清楚
这样做效果很好:
import subprocess
proc = subprocess.Popen(['gnuplot','-p'],
shell=True,
stdin=subprocess.PIPE,
)
proc.stdin.write('set xrange [0:10]; set yrange [-2:2]\n')
proc.stdin.write('plot sin(x)\n')
proc.stdin.write('quit\n') #close the gnuplot window
也可以使用'communicate‘,但除非使用gnuplot pause命令,否则绘图窗口会立即关闭
proc.communicate("""
set xrange [0:10]; set yrange [-2:2]
plot sin(x)
pause 4
""")
https://stackoverflow.com/questions/2161932
复制相似问题