在Python交互模式下,我可以拥有多个matplotlib绘图窗口吗?

5
我已经长期使用Matlab / octave,现在正转向NumPy / SciPy。 我发现matplotlib与Matlab中的图形绘制非常相似,并且易于使用。但是,我觉得使用plt.show()绘制图形时有一点不舒服,因为该过程会被卡住,所以在关闭该窗口之前无法输入任何新命令或启动另一个窗口来绘制另一个图形。例如,如果我们键入以下代码,则在关闭此窗口之前,我们不能键入任何新命令或启动另一个窗口进行另一个绘图。
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()

这种行为与Matlab plot非常不同。我们可以在Matlab交互模式下拥有多个图形窗口。

那么在Python交互模式下,我们能否做到同样的事情呢?

2个回答

4
在IPython中运行%matplotlib可以启用matplotlib交互支持,而无需将任何内容导入交互命名空间。然后立即运行plt.figure()会打开一个新的绘图窗口,plt.imshow()将其填充为图像,plt.plot()将其填充为表格数据,所有这些都不会阻塞控制台交互性。
启用matplotlib交互模式后,即使没有设置block=False,也可以运行plt.show(),它也不会阻塞任何内容,这会导致IPython在非交互模式下崩溃。 %pylab也启用了matplotlib交互支持,但它加载了太多的导入项,因此不建议使用。
使用“%run -i”执行的外部脚本在IPython的命名空间中运行,并且如果已启用交互式绘图,则会有交互式绘图支持。

更多关于matplotlib交互模式的信息,请参见什么是交互模式?在IPython中使用mathplotlib绘图


3

在调用plt.show()之前,您需要通过调用plt.ion()来开启交互模式。


通常我会在导入plt语句之后直接加上plt.ion(),这样在我的环境中就不需要使用plt.show()了。 - farenorth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接