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

使用for循环与subplot2grid实现任意DataFrame全列可视化

解决方案

核心修改思路

  • 移除硬编码的列数限制,动态获取DataFrame的总列数
  • 根据实际列数自适应调整可视化布局,保留原有样式框架
  • 遍历所有列进行渲染,不再仅展示前10列

修改后的示例代码

假设原代码基于matplotlib/seaborn实现填充式可视化,调整后的代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

def plot_filled_columns(df):
    total_cols = df.shape[1]
    # 按每行最多5列的逻辑,动态计算所需行数(向上取整)
    rows = (total_cols + 4) // 5
    cols_per_row = min(total_cols, 5)
    
    # 保留原有样式配置
    plt.figure(figsize=(cols_per_row*3, rows*2.5))
    sns.set_style("whitegrid")
    
    # 遍历所有列生成可视化
    for idx, col_name in enumerate(df.columns):
        plt.subplot(rows, cols_per_row, idx+1)
        # 保留原有填充式可视化逻辑(示例为累计面积图)
        df[col_name].cumsum().plot(kind='area', alpha=0.7, title=col_name)
        plt.tight_layout()
    
    plt.show()

# 测试不同列数的情况
# 列数<10的DataFrame
small_df = pd.DataFrame({f'col_{i}': range(10) for i in range(6)})
plot_filled_columns(small_df)

# 列数≥10的DataFrame
large_df = pd.DataFrame({f'col_{i}': range(10) for i in range(13)})
plot_filled_columns(large_df)

关键改动说明

  • 动态列数适配:用df.shape[1]获取总列数,替代原代码中硬编码的10
  • 自适应布局:通过rows = (total_cols + 4) // 5计算行数,确保任意列数都能合理排列子图,同时保持原有紧凑布局风格(可根据需求调整每行最大列数)
  • 全列渲染:循环df.columns遍历所有列,不再限制仅展示前10列
  • 样式保留:原有画布尺寸、主题风格、填充图逻辑完全保留,仅调整布局和列选择逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:42:41