2014-01-14 61 views
0

在試圖做一些small multiple的東西,我想用Matplotlib做一堆subplots和摺疊不同的數據到每個。 pyplot.subplots()給了我一個Figure和numpy數組Axes,但是在試圖遍歷座標軸時,我很難理解如何實際獲取它們。迭代通過Numpy數組的陰謀和使用元素的方法

我想一些類似於:

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' 

如何循環使用我的座標軸?

回答

3

可以做到這一點更簡單:

for ax in axs.ravel(): 
    ax.plot(...) 
+0

'.ravel()'指向原始數組,而'.flat()'創建一個副本。另見http://stackoverflow.com/questions/28930465/what-is-the-difference-between-flatten-and-ravel-functions-in-numpy – Martin

0

numpy的陣列具有.flat attribute返回一個1-d迭代:

for ax in axs.flat: 
    ax.plot(...) 

另一種選擇是重塑陣列以一維:

for ax in np.reshape(axs, -1): 
    ax.plot(...)