我一直在使用Matlab/octave很长一段时间,我正在过渡到NumPy/SciPy。我发现matplotlib非常类似于Matlab中的图形绘制,而且很容易使用。
但是,我对matplotlib感到不舒服的一件事是,当我使用plt.show()
绘制图形时,这个过程就卡在那里,所以我不能输入任何新命令,也不能在关闭窗口之前启动另一个窗口来绘制另一个图形。例如,如果我们键入以下代码,则在关闭此窗口之前,我们不能键入任何新命令,也不能启动另一个窗口以进行另一个绘图。
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
这一点与Matlab中的plot有很大不同。在Matlab交互模式下,我们可能有多个图形窗口。
我们可以在python交互模式下做同样的事情吗?
2条答案
按热度按时间sq1bmfud1#
在IPython中,运行%matplotlib可以启用matplotlib交互式支持,而无需将任何内容导入交互式命名空间。然后运行plt.figure()立即打开一个新的绘图窗口,plt.imshow()用图像填充它,plt.plot()对表格数据做同样的事情,所有这些都不会阻止控制台交互。
在matplotlib交互模式下,它可以运行plt.show(),即使没有设置block=False,它也不会阻止任何东西,这会导致IPython在非交互模式下致命地挂起。
%pylab还启用了matplotlib交互式支持,但它加载了太多的导入,不推荐使用。
使用'%run -i'执行的外部脚本在IPython的命名空间中运行,如果在那里启用了交互式绘图支持,则将具有交互式绘图支持。
有关matplotlib交互模式的更多信息,请参阅什么是交互模式?在IPython中使用mathplotlib绘图。
jyztefdp2#
您需要在调用
plt.show()
之前调用plt.ion()
来打开交互模式。