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
相关产品推荐
相关产品推荐

