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

Matplotlib子图断裂、可视化模糊问题求助

解决可视化模糊与子图断裂问题

你的代码存在两个核心问题导致当前异常:

  • 开头单独绘制的散点图会占用整个画布,与后续子图的布局逻辑冲突,引发子图断裂
  • 子图网格(2,2)与实际需要绘制的子图数量可能不匹配,且未做布局优化导致模糊

修正步骤与代码

  1. 移除开头独立的散点绘制代码,避免与子图布局冲突
  2. 使用plt.subplots一次性创建子图对象,统一管理布局
  3. 添加dpi参数提升图像清晰度,解决模糊问题
  4. 用tight_layout()自动调整子图间距,修复断裂问题
  5. 动态适配子图网格(示例中按2行排列,可根据列数调整)

修正后的代码:

import matplotlib.pyplot as plt
import seaborn as sns

# 获取需要绘制的特征列(排除Close)
plot_cols = [col for col in df.columns if col != 'Close']
num_plots = len(plot_cols)

# 计算子图网格:按2行排列,自动计算列数(向上取整)
rows = 2
cols = (num_plots + rows - 1) // rows

# 创建画布和子图,设置dpi提升清晰度
fig, axes = plt.subplots(rows, cols, figsize=(24, 12), dpi=100)

# 遍历子图和特征列
for ax, col in zip(axes.flat, plot_cols):
    sns.scatterplot(data=df, x=col, y='Close', ax=ax)
    ax.set_title(f'The Scatter Plot Between {col} and Close Price')

# 自动调整子图间距,避免元素重叠断裂
plt.tight_layout()
plt.show()

额外说明

  • 如果特征列数量固定(比如3个),可直接指定rows=2, cols=2,多余的子图用ax.axis('off')隐藏
  • 若仍有模糊,可适当提高dpi值(比如150),但会增加图像文件大小
  • tight_layout()会自动调整标题、坐标轴标签的位置,彻底避免子图元素重叠问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:52:06