我对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包。
我希望它是交互式的,但我得到的却是一个不友好的非交互式窗口。有人能告诉我我错过了什么吗?提前谢谢你。
发布于 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)
现在可以关闭窗口了。
发布于 2014-07-09 19:46:35
我也遇到了同样的问题。在ipython中有一个神奇的%matplotlib
,它为我解决了这个问题。至少现在我可以输入plt.figure()
(假设已经调用了import matplotlib.pyplot as plt
),并获得一个完全交互的响应图。
然而,我仍然有兴趣知道这个魔术到底意味着什么,以便能够理解这个问题。
https://stackoverflow.com/questions/12670101
复制相似问题