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

Pyplot第二个子图无法显示问题求助

问题解决:Matplotlib子图只显示一个的原因及修正

核心问题

你代码里的plt.subplot调用顺序完全搞反了——必须先指定子图区域,再在这个区域内绘图、加标签,而不是先画完图再创建子图。先绘图的话,内容会画在默认的大图上,之后调用subplot会创建新的子图区域,覆盖之前的内容,最后就只显示最后创建的那个子图。

修正后的代码(上下排列,2行1列)

# 先创建第一个子图(2行1列的第1个位置)
plt.subplot(211)
x1 = list(stablepdfs.keys())
y1 = list(stablepdfs.values())
plt.scatter(x1, y1)
plt.title('成功PDF的大小分布')
plt.xlabel('PDF大小(MB)')
plt.ylabel('PDF数量')

# 创建第二个子图(2行1列的第2个位置)
plt.subplot(212)
x2 = list(unstablepdfs.keys())
y2 = list(unstablepdfs.values())
plt.scatter(x2, y2, c='r')
plt.title('失败PDF的大小分布')
plt.xlabel('PDF大小(MB)')
plt.ylabel('PDF数量')

# 自动调整子图间距,避免标题、标签重叠
plt.tight_layout()
plt.show()

如果要实现并排显示(1行2列),修改subplot参数即可:

# 第一个子图(1行2列的第1个位置)
plt.subplot(121)
x1 = list(stablepdfs.keys())
y1 = list(stablepdfs.values())
plt.scatter(x1, y1)
plt.title('成功PDF的大小分布')
plt.xlabel('PDF大小(MB)')
plt.ylabel('PDF数量')

# 第二个子图(1行2列的第2个位置)
plt.subplot(122)
x2 = list(unstablepdfs.keys())
y2 = list(unstablepdfs.values())
plt.scatter(x2, y2, c='r')
plt.title('失败PDF的大小分布')
plt.xlabel('PDF大小(MB)')
plt.ylabel('PDF数量')

plt.tight_layout()
plt.show()

小提示

  • 把两个子图的标题区分开,能更直观地对应数据;
  • plt.tight_layout()是个实用函数,能自动调整子图间的距离,避免文字重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:33:25