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

如何为Pandas DataFrame的各索引值绘制独立子图?

给DataFrame每个索引行绘制独立子图的解决方案

嘿,作为Pandas新手碰到这个需求完全没问题,我来给你一步步拆解怎么实现~

第一步:先构造你的示例DataFrame

首先我们先把你给出的示例数据转换成Pandas DataFrame,方便后续操作:

import pandas as pd
import matplotlib.pyplot as plt

# 构造数据
data = {
    'col1': [264296, 401876, 852574],
    'col2': [32413, 27045, 51447],
    'col3': [80984, 418732, 8720],
    'col4': [1286, 3287, 138329],
    'col5': [338, 162815, 1160],
    'col6': [31, 771, 1960],
    'col7': [564, 362553, 246],
    'col8': [669, 6648, 1014]
}
# 设置你给出的字符串索引
index_labels = ['ANDAMAN & NICOBAR ISLANDS', 'ARUNACHAL PRADESH', 'CHANDIGARH']
df = pd.DataFrame(data, index=index_labels)

第二步:循环生成每个索引的独立子图

接下来我们利用Matplotlib创建对应数量的子图,然后遍历DataFrame的每一行,在对应的子图上绘制图表:

# 根据索引数量创建子图布局,这里用3行1列的布局,你也可以改成1行3列(ncols=3, nrows=1)
fig, axes = plt.subplots(nrows=len(df), ncols=1, figsize=(10, 15))

# 遍历每一行,同时拿到索引标签和行数据
for idx, (row_label, row_data) in enumerate(df.iterrows()):
    # 获取当前子图
    current_ax = axes[idx]
    # 绘制柱状图(你可以改成kind='line'画折线图,或者其他支持的类型)
    row_data.plot(kind='bar', ax=current_ax)
    # 设置子图标题,用索引标签命名
    current_ax.set_title(f'Data for {row_label}', fontsize=12)
    # 设置坐标轴标签
    current_ax.set_xlabel('Column Names', fontsize=10)
    current_ax.set_ylabel('Values', fontsize=10)
    # 旋转x轴标签,避免文字重叠
    current_ax.tick_params(axis='x', rotation=45)

# 自动调整子图间距,避免标题、标签重叠
plt.tight_layout()
# 显示图表
plt.show()

小提示

  • 如果你想更换图表类型,只需要修改plot()方法里的kind参数,比如kind='line'(折线图)、kind='pie'(饼图)都可以
  • 子图布局可以根据你的需求调整,比如把nrows=len(df), ncols=1改成nrows=1, ncols=len(df),就能把所有子图排成一行
  • 如果你的DataFrame列名有实际含义,可以把代码里的col1-col8换成真实的列名,图表会更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:54:12