Matplotlib ion() 函数无法进行交互,怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

我对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()’语句,那么它就能正常工作。我使用空闲,Matplotlib版本1.2.x包安装在Python3.2.2中。

我希望它是交互式的,但我却得到了一个不友好的非交互窗口。

提问于
用户回答回答于

至少现在我可以输出plt.figure()(假设import matplotlib.pyplot as plt已经被调用了),并得到了一个完全交互式的响应图形。

用户回答回答于

在开启互动模式之后plt.ion(),需要暂时暂停pyart以更新/重绘其自身。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)

现在可以关闭窗口了。

扫码关注云+社区