我有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()
Run Code Online (Sandbox Code Playgroud)
如果我删除'plt.ion()'语句,那么它工作得很好.我使用IDLE,并在Python 3.2.2中安装了Matplotlib 1.2.x版软件包.
我希望它是互动的,但我得到了一个不友好的非交互式窗口.有人可以解释我所缺少的东西吗?先感谢您.
kao*_*sad 46
我碰上了这个链接找到这里,回答我的问题.
似乎在打开交互模式之后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)
Run Code Online (Sandbox Code Playgroud)
如果您在IDLE控制台中尝试了这一点,请注意到目前为止所有内容都已显示,但图形窗口冻结且无法退出.要解冻它,请键入以下最后一个语句
>>> plt.show(block=True)
Run Code Online (Sandbox Code Playgroud)
现在窗口可以关闭.
我现在正在遇到一模一样的问题.在ipython中有魔法%matplotlib,它解决了我的问题.至少现在我可以输入plt.figure()(假设import matplotlib.pyplot as plt已被调用)并获得完全交互式响应图.
但是,我仍然有兴趣知道这个魔法进口到底能够理解这个问题.
| 归档时间: |
|
| 查看次数: |
37070 次 |
| 最近记录: |