2016-11-14 3 views
1

matplotlibの配列から開いたイメージにボックスを描きたい。私がボックスを描くために見つけた1つの方法は、add_patchを使用することですが、配列から読み込まれたイメージにその方法を使用する方法を見つけることができません。matplotlibで開いたnumpy配列へのパッチの追加

このコード

arr = np.random.rand(400,400) 
fig = plt.imshow(arr) 
fig.add_patch(patches.Rectangle((100, 100), 100, 100, fill=False)) 

はエラーを生成します:はAttributeError: 'AxesImage' オブジェクトが属性 'add_patch' を持っていない

+0

'imshow'は' Figure 'ではなく 'AxisImage'を返します。 'Figure'オブジェクトは' add_patch'メソッドを持たず、 'Axes'オブジェクトは行いません。明らかに 'AxisImage'は' AxisBase'から継承していません。 AxisImageの軸は、 'axes'プロパティを通して得ることができます。例: 'plt.imshow(arr).axes' –

答えて

2

あなたはmatplotlibの軸にあなたのパッチを追加する必要があります。

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 
import numpy as np 

arr = np.random.rand(400,400) 
fig,ax = plt.subplots(1) 

ax.imshow(arr) 
rect = patches.Rectangle((100, 100), 100, 100, fill=False) 
ax.add_patch(rect) 
plt.show() 
関連する問題