我正在使用subplots
函数将8列绘制到一个图形中。但是,它显示
“ IndexError:数组的索引过多”
# -*- coding: utf-8 -*-
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import style
df = pd.read_csv('XXXX', encoding='utf-8')
num = 0
for dim in ['A','B','C','D','E','F','G','H']:
fig, axes = plt.subplots(nrows=8, ncols=1)
df[dim].plot(ax=axes[num,0])
plt.xlabel(dim)
num += 1
plt.show()
答案 0 :(得分:2)
您的代码有两个问题:
subplots()
,这是错误的。您应该只在外面定义一次。 axes[num]
而不是axes[num, 0]
来引用特定的子图,因为您只有一列,这就是为什么获得> IndexError
的原因。如果您有多于1列,则索引axes[num, 0]
,axes[num, 1]
等将可用。 解决方案
# import commands here
df = pd.read_csv('XXXX', encoding='utf-8')
num = 0
fig, axes = plt.subplots(nrows=8, ncols=1) # <---moved outside for loop
for dim in ['A','B','C','D','E','F','G','H']:
df[dim].plot(ax=axes[num])
plt.xlabel(dim)
num += 1
plt.show()
使用enumerate
替代num
变量的替代方法
fig, axes = plt.subplots(nrows=8, ncols=1)
for i, dim in enumerate(['A','B','C','D','E','F','G','H']):
df[dim].plot(ax=axes[i])
plt.xlabel(dim)
plt.show()