Matplotlib子图断裂、可视化模糊问题求助
解决可视化模糊与子图断裂问题
你的代码存在两个核心问题导致当前异常:
- 开头单独绘制的散点图会占用整个画布,与后续子图的布局逻辑冲突,引发子图断裂
- 子图网格(2,2)与实际需要绘制的子图数量可能不匹配,且未做布局优化导致模糊
修正步骤与代码
- 移除开头独立的散点绘制代码,避免与子图布局冲突
- 使用
plt.subplots一次性创建子图对象,统一管理布局 - 添加
dpi参数提升图像清晰度,解决模糊问题 - 用
tight_layout()自动调整子图间距,修复断裂问题 - 动态适配子图网格(示例中按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
相关产品推荐
相关产品推荐

