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

如何批量绘制DataFrame所有列与目标列的Matplotlib散点图并逐一保存?

高效批量绘制散点图并保存的方法

当然有更省心的解决方案!完全不用手动修改68次代码,只需要通过一个循环就能自动完成所有散点图的绘制和保存,步骤如下:

完整实现代码

import matplotlib.pyplot as plt
import pandas as pd

# 假设你的DataFrame名为output_weight,目标列是'target_sur'
target_col = 'target_sur'
# 筛选出所有需要作为X轴的列(排除目标列)
feature_columns = [col for col in output_weight.columns if col != target_col]

# 遍历每个特征列,批量生成散点图
for col in feature_columns:
    # 创建画布
    plt.figure(figsize=(9, 5))
    # 绘制散点图
    plt.scatter(output_weight[col], output_weight[target_col], color='darkred', s=17)
    # 设置图表标题和坐标轴标签(用f-string动态生成)
    plt.title(f'{col} vs {target_col}', fontsize=10)
    plt.xlabel(col, fontsize=10)
    plt.ylabel(target_col, fontsize=10)
    # 关闭刻度偏移,用普通格式显示数值
    plt.ticklabel_format(useOffset=False, style='plain')
    plt.grid(True)
    # 保存图片,文件名用列名命名,确保每个文件唯一
    plt.savefig(f'{col}_vs_{target_col}.png', dpi=300, bbox_inches='tight')
    # 关闭画布,释放内存(非常重要,避免多次循环后内存溢出)
    plt.close()

关键步骤解释

  • 批量获取列名:用列表推导式自动筛选出所有非目标列,不用手动罗列68个列名,只要DataFrame结构不变,新增列也能自动适配。
  • 动态生成图表元素:通过f-string把当前列名插入到标题、坐标轴标签和文件名中,确保每个图表的标识清晰且唯一。
  • 内存优化:每次循环后用plt.close()关闭画布,避免同时在内存中保留68个图表导致性能下降。
  • 保存细节:dpi=300保证图片清晰度,bbox_inches='tight'防止标题或坐标轴标签被截断。

额外优化建议

  • 如果需要跳过某些特定列,只需修改列表推导式的条件,比如:
    feature_columns = [col for col in output_weight.columns if col not in [target_col, '列名1', '列名2']]
    
  • 如果想统一调整图表样式(比如颜色、点大小),直接在循环内修改plt.scatter()的参数即可,一次修改同步所有图表。
  • 如果需要临时查看图表,可以在plt.savefig()之后添加plt.show(),但注意68次循环会弹出大量窗口,建议优先保存后批量查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:49:07