有没有办法在 Python 2.65、Matplotlib 0.99 中显示 pyplot 图,而不锁定其他所有内容?
我有一个带有 Pmw GUI 的程序,在 Python 2.75 和 Matplotlib 1.3.1 上运行。在 Windows(64 位 Winpython)上。
每次绘制图形(或每次向现有图形添加某些内容)时,例程都会调用 plt.show()。
可以显示 pyplot 图形,同时允许用户继续使用 GUI 并操作图形,没有任何东西会阻止任何东西,正如我希望的那样,因为我需要用户在决定下一步在 GUI 中做什么时查看绘图,并有几个相邻的图进行比较。
现在,我需要在使用 Python 2.65 和 Matplotlib 0.99 的系统上完成所有这些工作。现在的行为似乎是,除非调用 plt.show() ,否则什么都不可见,然后它将阻止所有内容,直到关闭绘图窗口。
我尝试使用 plt.draw() 代替,但随后该图甚至没有显示。
更糟糕的是:一些绘制现有图形的例程永远没有机会,因为它们在图形显示时无法执行,而当它们可以执行时,图形已经消失了。我不能等到最后一次绘图操作,因为这些图表旨在构建增量,将信息添加到用户需要能够看到的现有图表中。
我不被允许更新 matplotlib。如果我将库的非二进制部分作为“我的”软件包的一部分,我就可以使用它们。
理想情况下,我正在寻找能够在我正在工作的两种环境中工作的代码,但在这一点上我愿意做出妥协......
Update:
我发现一些在同一环境中运行的代码能够执行所有这些操作,我可以在其中删除 plt.show() 调用,甚至在 IDLE 中运行它(根据 matplotlib 文档,这在这些方面存在问题),它“正常工作”——我无法发现这两个代码处理任务的方式有任何区别:两者都定义了一个figure.axes对象,将其传递给绘制到它们中的例程(使用plt.plot()) )并保存以供将来使用。
我还发现我当前的代码将改变其在当前库集上的行为,具体取决于我运行它的方式:在 Spyder 中的“常规”控制台或系统控制台中,一切都很好,但在 Spyder 中的专用控制台上,第一个图会锁住界面
=> 我开始认为这毕竟与 matplotlib 版本无关,但不知道还能去哪里寻找——根据 matplotlib 的启动方式,还有其他东西可以改变它的行为吗?
您似乎正在寻找:
plt.show(block=False)
or plt.ion http://matplotlib.org/faq/usage_faq.html#what-is-interactive-mode:
plt.ion()
plt.show()
# update figure, calc stuff
plt.pause()
不太确定它们是否在 0.99 中可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)