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

使用Matplotlib子图绘制Pandas DataFrame多列数据报错求助

解决Pandas子图绘制报错'AxesSubplot object is not subscriptable'

错误原因

  1. plt.subplots(1,1) 创建的是单个Axes对象,并非可通过下标访问的数组,因此使用axis[0,0]会触发下标访问错误。你需要的是1行2列的子图布局,应改为plt.subplots(1,2)。
  2. 调用df.plot()时,需通过ax参数指定目标子图,而非axis[0,0].df.plot()这种错误写法。
  3. figsize参数应放在plt.subplots()中统一设置,避免重复设置导致布局混乱。

修正后的代码

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('D:\\data_ana\\file_r.csv')
# 创建1行2列的子图,设置整体画布大小
figure, axis = plt.subplots(1, 2, figsize=(10, 5))

# 在第一个子图绘制K_DistX、K_DistY与Age的折线图
df.plot(x="Age", y=["K_DistX","K_DistY"], kind="line", ax=axis[0])
axis[0].set_title('K_DistX & K_DistY vs Age')

# 在第二个子图绘制K_VabsX、K_VabsY与Age的折线图
df.plot(x="Age", y=["K_VabsX","K_VabsY"], kind="line", ax=axis[1])
axis[1].set_title('K_VabsX & K_VabsY vs Age')

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

关键修正说明

  • 用plt.subplots(1,2)替代plt.subplots(1,1),生成1行2列的子图数组axis,此时axis[0]对应第一个子图,axis[1]对应第二个子图。
  • 通过df.plot(..., ax=axis[0])明确指定绘图的目标子图,这是Pandas绘图与Matplotlib子图结合的标准写法。
  • 添加plt.tight_layout()自动优化子图布局,防止坐标轴标签、标题出现重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:45:37