首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Matplotlib ion()函数无法交互

Matplotlib ion()函数无法交互
EN

Stack Overflow用户
提问于 2012-10-01 16:51:37
回答 2查看 43.5K关注 0票数 28

我对Matplotlib的交互功能有问题。我运行以下程序,收到一个冻结的空图形窗口。

import matplotlib.pyplot as plt
import numpy as np

plt.ion()
x = np.arange(0, 4*np.pi, 0.1)
y = [np.sin(i) for i in x]
plt.plot(x, y, 'g-', linewidth=1.5, markersize=4)
plt.show()

如果我删除了'plt.ion()‘语句,那么它就能正常工作。我使用IDLE,并且在Python 3.2.2中安装了Matplotlib版本1.2.x包。

我希望它是交互式的,但我得到的却是一个不友好的非交互式窗口。有人能告诉我我错过了什么吗?提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2012-10-02 15:18:11

我偶然发现了这个链接,找到了here,它回答了我的问题。

似乎在通过plt.ion()打开交互模式后,pyplot需要暂时暂停,以便它通过plt.pause(0.0001)更新/重绘自己。这就是我所做的,并且它起作用了!

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> plt.ion()
>>> x = np.arange(0, 4*np.pi, 0.1)
>>> y = [np.sin(i) for i in x]
>>> plt.plot(x, y, 'g-', linewidth=1.5, markersize=4)
>>> plt.pause(0.0001)         
>>> plt.plot(x, [i**2 for i in y], 'g-', linewidth=1.5, markersize=4)
>>> plt.pause(0.0001)
>>> plt.plot(x, [i**2*i+0.25 for i in y], 'r-', linewidth=1.5, markersize=4) 
>>> plt.pause(0.0001)

如果您尝试在空闲控制台中执行此操作,请注意,到目前为止,除了图形窗口冻结且无法退出之外,所有内容都显示出来了。要解冻它,请键入以下最后一条语句

>>> plt.show(block=True)

现在可以关闭窗口了。

票数 54
EN

Stack Overflow用户

发布于 2014-07-09 19:46:35

我也遇到了同样的问题。在ipython中有一个神奇的%matplotlib,它为我解决了这个问题。至少现在我可以输入plt.figure() (假设已经调用了import matplotlib.pyplot as plt ),并获得一个完全交互的响应图。

然而,我仍然有兴趣知道这个魔术到底意味着什么,以便能够理解这个问题。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12670101

复制
相关文章

相似问题

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