在使用matplotlib.pyplot通过Python中的Axes Object迭代多个图时发生错误

问题描述 投票:0回答:2
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi,500)
y = np.sin(x**2)
fig, axes = plt.subplots(2,2)
for current_axis in axes:
    current_axis.plot(x,y)

结果是:

AttributeError: 'numpy.ndarray' object has no attribute 'plot'

如果不进行迭代但执行以下操作,则可以使用

axes[0, 0].plot(x, y)
axes[1, 1].plot(x, x**2)

为什么我不能迭代相同的轴数组对象?] >>

将numpy作为np导入matplotlib.pyplot作为plt x = np.linspace(0,2 * np.pi,500)y = np.sin(x ** 2)图,轴= plt.subplots(2,2 ),用于以轴表示的current_axis:current_axis.plot(x,y)结果为:...

python matplotlib axes
2个回答
0
投票

这是因为Axes对象是尺寸为2x2的ndarray,这意味着每一行都是另一个数组。解决方案很简单,只需将.flatten()添加到Axes对象即可使其一维:


0
投票

您的轴数组是二维的。一个数组,一个数组,一个图。如果仅将1用于循环,则仅访问第一个维度。您可以将2用于循环,也可以

© www.soinside.com 2019 - 2024. All rights reserved.