首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从python调用gnuplot

从python调用gnuplot
EN

Stack Overflow用户
提问于 2010-01-29 20:44:00
回答 8查看 46.4K关注 0票数 21

我有一个python脚本,经过一些计算后,它将生成两个格式化为gnuplot输入的数据文件。

如何从python中“调用”gnuplot?

我想将以下python字符串作为输入发送到gnuplot:

代码语言:javascript
复制
"plot '%s' with lines, '%s' with points;" % (eout,nout)

其中'eout‘和'nout’是两个文件名。

PS:我更喜欢不使用额外的python模块(例如.gnuplot-py),只有标准的API。

谢谢

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-01-29 21:11:02

一种简单的方法可能是只编写包含gnuplot命令的第三个文件,然后告诉Python使用该文件执行gnuplot。假设你写了

代码语言:javascript
复制
"plot '%s' with lines, '%s' with points;" % (eout,nout)

添加到名为tmp.gp的文件中。然后你就可以使用

代码语言:javascript
复制
from os import system, remove
system('gnuplot -persist tmp.gp')
remove('tmp.gp')
票数 10
EN

Stack Overflow用户

发布于 2010-01-29 20:48:52

subprocess模块允许您调用其他程序:

代码语言:javascript
复制
import subprocess
plot = subprocess.Popen(['gnuplot'], stdin=subprocess.PIPE)
plot.communicate("plot '%s' with lines, '%s' with points;" % (eout,nout))
票数 23
EN

Stack Overflow用户

发布于 2011-02-15 18:43:21

子过程在Doug Hellemann的Python Module of the Week中解释得非常清楚

这样做效果很好:

代码语言:javascript
复制
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命令,否则绘图窗口会立即关闭

代码语言:javascript
复制
proc.communicate("""
set xrange [0:10]; set yrange [-2:2]
plot sin(x)
pause 4
""")
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2161932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档