matplotlib 3.4.2版本plt.axes的position参数设置坐标轴位置异常问题
问题根因
该异常是matplotlib 3.3及以上版本的默认配置变更导致的:从3.3版本开始,部分渠道安装的matplotlib会默认开启constrained_layout(约束布局)功能,该功能会在绘图渲染阶段自动调整子图位置避免标签、刻度被裁切,会直接覆盖你创建plt.axes()时传入的position参数。
Google Colab默认预装的matplotlib版本普遍低于3.3,未开启该默认配置,因此相同代码运行效果符合预期。
可行解决方案
- 方案1:创建画布时显式关闭自动布局,无需修改后续轴域相关代码
将代码中的plt.figure()替换为:plt.figure(constrained_layout=False, tight_layout=False) - 方案2:全局修改运行配置,适配所有本地运行的绘图脚本
在导入matplotlib库后添加全局参数配置:import matplotlib.pyplot as plt plt.rcParams.update({ "figure.constrained_layout.use": False, "figure.autolayout": False }) - 方案3:保留自动布局功能,仅指定特定轴域不被布局管理器调整
在创建对应轴域后添加如下配置:ax1.set_in_layout(False) ax2.set_in_layout(False)
你当前使用的绘图完成后重新调用set_position的方法也可正常使用,属于兼容所有matplotlib版本的通用写法。
内容的提问来源于stack exchange,提问作者ramzeek
相关产品推荐
相关产品推荐

