Tao*_*Tao 0 python matplotlib subplot
我正在使用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()
Run Code Online (Sandbox Code Playgroud)
您的代码有两个问题:
subplots()错误的 for 循环内部。你应该只在外面定义一次。axes[num]而不是axes[num, 0]引用特定的子图,因为您只有一列,这就是为什么您获得> IndexError. 索引axes[num, 0],axes[num, 1]如果你有超过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()
Run Code Online (Sandbox Code Playgroud)
使用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()
Run Code Online (Sandbox Code Playgroud)