首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib交互模式在win 7上不起作用

Matplotlib交互模式在win 7上不起作用
EN

Stack Overflow用户
提问于 2014-04-17 18:34:37
回答 3查看 3K关注 0票数 2

这个文件应该可以工作,但是它不能:

代码语言:javascript
复制
from matplotlib import pyplot

pyplot.ion()
pyplot.plot(range(10))

raw_input('Press return to close')

显示“绘图”窗口,内部为白色,并显示沙漏光标。文本将打印在shell中,按下“返回”将关闭空的“绘图”窗口。

我可以从ipython中绘制,但这必须从一个文件中运行。与Using ion() from pylab causes matplotlib to hang完全相同的问题,但解决方案对我没有帮助。

默认情况下,我使用的是Qt4Agg。我没有改变任何设置,这是一个新的Anaconda安装。

我不认为这是Anaconda的具体问题,不久前我在一个普通的Python安装中遇到了完全相同的问题,但我不记得解决方案了。

我最近将Matplotlib升级为1.3.1 np18py27_1

代码语言:javascript
复制
Current conda install:

             platform : win-32
        conda version : 3.0.6
       python version : 2.7.6.final.0
     root environment : C:\Anaconda  (writable)
  default environment : C:\Anaconda
     envs directories : C:\Anaconda\envs
        package cache : C:\Anaconda\pkgs
         channel URLs : http://repo.continuum.io/pkgs/free/win-32/
                        http://repo.continuum.io/pkgs/pro/win-32/
          config file : None
    is foreign system : False
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-10 00:41:43

答案简单得令人尴尬,

代码语言:javascript
复制
ipython qtconsole --matplotlib

“诀窍”是添加这个选项--matplotlib。在Anaconda启动程序中运行IPython-qt控制台会忽略这一点,我不知道为什么。如果不支持交互式绘图,至少应该对pyplot.ion()发出警告。

票数 0
EN

Stack Overflow用户

发布于 2014-04-18 19:21:26

如果它解决了调用不同后端的问题,则可以通过更改matplotlibrc文件使其成为永久更改。

不幸的是,我不知道这个文件在windows中的位置。

当您找到它时,第32行设置使用的后端:

代码语言:javascript
复制
#### CONFIGURATION BEGINS HERE

# the default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# CocoaAgg FltkAgg MacOSX QtAgg Qt4Agg TkAgg WX WXAgg Agg Cairo GDK PS
# PDF SVG Template
# You can also deploy your own backend outside of matplotlib by
# referring to the module name (which must be in the PYTHONPATH) as
# 'module://my_backend'
backend      : <Whatever works for you>

这将允许您在ipython之外的文件中运行它。

票数 1
EN

Stack Overflow用户

发布于 2014-04-18 18:12:36

我猜你想要这样的东西。它在linux下工作得很好。由于包含了1.e-6秒的暂停,所以它也应该在windows上工作。

代码语言:javascript
复制
import sys
import select
from matplotlib import pyplot


def heardEnter():
    i,o,e = select.select([sys.stdin],[],[],0.0001)
    for s in i:
        if s == sys.stdin:
            input = sys.stdin.readline()
            return True
    return False

pyplot.ion()
pyplot.pause(1.e-6)

print "Press enter to exit plotting"

cont = 1
while cont:
    pyplot.plot(range(10 + cont))
    pyplot.draw()

    cont += 1
    if heardEnter():
        cont = False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23140830

复制
相关文章

相似问题

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