在尝试做一些small multiple时,我想用Matplotlib制作一堆子图,并向每个子图中输入不同的数据。 pyplot.subplots()
给了我一个Figure
和Numpy数组Axes
,但是在尝试迭代轴时,我很难理解如何实现它们。
我正在尝试类似的事情:
import numpy as np
import matplotlib.pyplot as plt
f, axs = plt.subplots(2,2)
for ax in np.nditer(axs, flags=['refs_ok']):
ax.plot([1,2],[3,4])
但是,每次迭代中ax
的类型不是Axes
,而是ndarray
,因此尝试绘图失败的原因为:
AttributeError: 'numpy.ndarray' object has no attribute 'plot'
如何循环我的轴?
答案 0 :(得分:3)
你可以更简单地做到这一点:
for ax in axs.ravel():
ax.plot(...)
答案 1 :(得分:0)
Numpy数组有.flat
attribute返回1-D迭代器:
for ax in axs.flat:
ax.plot(...)
另一个选择是将数组重塑为单个维度:
for ax in np.reshape(axs, -1):
ax.plot(...)