You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用matplotlib手动管理坐标轴实现三幅子图同画布问题

问题原因

  • 代码中先后两次调用plt.figure(),生成了两个完全独立的画布,所以第三个axes被添加到了第二个新画布上,没有和前两个子图放在一起。
  • 给np对象直接新增sincx属性的写法不规范,建议直接用普通变量存储计算结果。

修复后代码

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-4*np.pi,4*np.pi,0.25)
sincx = np.sin(x)/x 

# 只创建一次画布
plt.figure(num=3, figsize=(7,5)) 
# 添加前两个子图
plt.subplot(3,2,1) 
plt.plot(x, sincx)

plt.subplot(3,2,2)
plt.plot(x, sincx, "ro")

# 直接获取当前已创建的画布,手动添加axes
ax = plt.gcf().add_axes((0.125,0.1,0.775,0.45))
ax.plot(x, sincx**2)

plt.show()

改动说明

  • 删除了第二次新建画布的fig = plt.figure()代码,改用plt.gcf()直接获取已经创建的第一个画布对象
  • 把不规范的np.sincx改为普通变量sincx,避免污染numpy命名空间
  • 直接在第一个画布上手动添加axes,即可实现三个图放在同一张画布的效果

内容的提问来源于stack exchange,提问作者Dearsfs Asfrt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:45:08