Matplotlib中用add_axes创建轴后如何激活plt.show()显示图形?
解决方案:matplotlib中add_axes配合plt.show()无响应问题
问题根源
直接通过plt.Figure()创建的Figure对象,不会被matplotlib的pyplot模块自动跟踪管理。plt.show()默认只显示pyplot上下文里的当前Figure,所以这种情况下调用plt.show()不会弹出窗口;而fig.savefig()能正常工作是因为它直接操作Figure实例本身,不需要依赖pyplot的上下文管理。
两种可行解决方法
方法1:使用pyplot接口创建Figure
用plt.figure()替代plt.Figure(),创建的Figure会自动被pyplot设为当前图形并纳入管理,后续调用plt.show()就能正常弹出窗口:
import matplotlib.pyplot as plt fig = plt.figure() # 替换为plt.figure() ax = fig.add_axes(rect=(0.1, 0.0, 0.9, 1.0)) plt.show()
方法2:手动将自定义Figure设为pyplot当前图形
如果必须手动实例化plt.Figure(),可以通过plt.scf(fig)将其设置为pyplot的当前图形,让plt.show()能识别并显示它:
import matplotlib.pyplot as plt fig = plt.Figure() ax = fig.add_axes(rect=(0.1, 0.0, 0.9, 1.0)) plt.scf(fig) # 将自定义Figure设为当前图形 plt.show()
内容的提问来源于stack exchange,提问作者Paweł Wójcik
相关产品推荐
相关产品推荐

