热力发电蒸汽预测Python程序matplotlib最后绘图不显示及失真问题
代码问题及绘图异常原因
核心问题1:画布尺寸与子图布局配置错误
你使用的火力发电蒸汽数据集共有39列(38个特征+1个蒸汽产量目标列),代码中最后一段绘图的配置存在明显不合理:
- 子图布局设为
39行×6列,总槽位234个,但实际只需要绘制39×2=78张子图,大量空槽位会导致画布空间浪费,子图被挤压到画布上半部分,下半部分完全空白,出现“无法正常显示”的假象 - 画布尺寸设为
(24, 156)(4×6宽,4×39高),超大尺寸远超普通显示设备的渲染上限,GUI界面下会出现加载失败,命令行渲染时会触发分辨率适配错误,出现文字堆叠、比例失真的问题
核心问题2:缺少子图间距自动调整逻辑
代码没有调用plt.tight_layout(),密集排列的子图的轴标签、刻度会互相遮挡,进一步加剧显示异常。
修复方案
将最后一段绘图代码替换为以下内容即可解决问题:
# 调整子图布局:1个特征对应2个横向排列的子图(分布图+概率图) train_cols = 2 train_rows = len(train_data.columns) # 缩小画布尺寸到合理范围 plt.figure(figsize=(4 * train_cols, 3 * train_rows)) i = 0 for col in train_data.columns: i += 1 ax = plt.subplot(train_rows, train_cols, i) sns.distplot(train_data[col], fit=stats.norm) plt.ylabel(col, fontsize=8) i += 1 ax = plt.subplot(train_rows, train_cols, i) res = stats.probplot(train_data[col], plot=plt) # 自动调整子图间距避免标签重叠 plt.tight_layout() plt.show()
如果觉得单张图过长不便查看,可以分批绘制特征,比如每10个特征生成一张独立的图。
内容的提问来源于stack exchange,提问作者piratesailor
相关产品推荐
相关产品推荐

