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

Matplotlib交互模式在win 7上不起作用,matplotlib,anaconda,Matplotlib,Anaconda,此文件应该可以工作,但它不能: from matplotlib import pyplot pyplot.ion() pyplot.plot(range(10)) raw_input('Press return to close') 此时将显示打印窗口,内部为白色,并显示沙漏光标。 文本在shell中打印,点击回车键关闭空打印窗口 我可以从ipython绘图,但这必须从文件运行。 与问题完全相同,但解决方案对我没有帮助 默认情况下,我使用的是Qt4Agg。我没有更改任何设置,这是一个新的A

此文件应该可以工作,但它不能:

from matplotlib import pyplot

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

raw_input('Press return to close')
此时将显示打印窗口,内部为白色,并显示沙漏光标。 文本在shell中打印,点击回车键关闭空打印窗口

我可以从ipython绘图,但这必须从文件运行。 与问题完全相同,但解决方案对我没有帮助

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

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

我最近将Matplotlib升级到1.3.1 np18py27_1

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

我猜你想要这样的东西。它在linux下运行良好。由于包括1.e-6秒的暂停,因此它也应适用于windows

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

如果它解决了调用其他后端的问题,则可以通过更改
matplotlibrc
文件来进行永久性更改

不幸的是,我不确定该文件在windows中的位置

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

#### 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>
#####配置从这里开始
#默认后端;GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo之一
#COCOAGG FltkAgg MacOSX QtAgg Qt4Agg TkAgg WX WXAgg Agg开罗GDK PS
#PDF SVG模板
#您还可以通过以下方式在matplotlib之外部署自己的后端:
#将模块名称(必须在PYTHONPATH中)引用为
# 'module://my_backend'
后端:

这将允许您从ipython之外的文件运行它

答案非常简单

ipython qtconsole --matplotlib
“技巧”是添加选项--matplotlib。 从Anaconda发射器运行IPython qtconsole忽略了这一点,我不知道为什么。
如果pyplot.ion()不支持交互式绘图,至少它应该在pyplot.ion()上发出警告。

我在windows上使用的
ion()
也有问题,而我的代码在linux上运行良好。对我来说,这有助于引入一个非常短的暂停,使窗口不显示白色窗口。我需要包含的代码是:
pylab.pause(1.e-6)
。这也适用于您吗?当我在绘图后放置pylab.pause(1e-6)时,绘图会出现,但不是交互式的。很奇怪。你知道发生了什么吗?在什么意义上它不是互动的?它将要求您绘制比代码中提供的更多的图形。在每个绘图之后,都应该有
pyplot.draw()
。使用这段代码,交互式绘图将使用新数据进行更新。对不起,我不清楚。我的意思是我不能再和情节互动了。当我做离子,绘图,原始输入时,我得到一个没有任何东西的白色窗口。离子、暂停、绘图、原始输入相同。离子、绘图、暂停、原始输入绘制绘图,但随后窗口冻结,无法缩放。当我暂停10秒时,我可以缩放10秒,然后它冻结。这很奇怪,因为我问题中的代码非常基本,我已经用了很多年了。它也适用于其他机器。我已经尝试了matplotlib.rcsetup中的后端。所有\u后端,大多数都不可用或存在相同的问题。我担心这是安装上的问题,也许它有缺陷。不幸的是,这是一台运行非常专用且昂贵的硬件的机器,它以一种非常不幸的方式与python安装接口(将文件直接安装到install中),因此我不能只重新安装python。有趣的是,您可以使用吗?OP使用Anaconda,因此,应该使用
conda create
创建一个单独的环境。新环境也没有这样做,缺少命令行选项。这导致windows崩溃,但感谢您的帮助。