2016-11-14 35 views
1

我想在matplotlib中的數組中打開的圖像上繪製框。我發現繪製盒子的一種方法是使用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'返回一個'AxisImage'而不是'Figure'。一個'圖'對象沒有'add_patch'方法,'Axes'對象。顯然'AxisImage'不會從'AxisBase'繼承。您可以通過'axes'屬性獲取'AxisImage'的軸。例如'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() 
相關問題