[英]Setting position of contour sub-plot in Matplotlib
我正在使用 SciPy 識別 CT 圖像中的腫瘤。 一旦我確定了包含腫瘤的切片,我就會使用以下方法檢索切片:
slice_x, slice_y = ndimage.find_objects(label_im==label)[0]
然后我繪制完整圖像如下:
plt.imshow(image, cmap='gray')
我想將提取的切片(包含腫瘤)的輪廓疊加在適當位置的原始圖像之上。 但是,我無法讓等高線圖位於正確區域的頂部。 相反,等高線圖始終位於圖像的左上角。 這是我正在使用的:
plt.contour(mask[slice_x, slice_y], position=(slice_x.start, \
slice_y.start), linewidths=2, colors='r')
結果如下:
如何在主圖中設置等高線圖的位置? 謝謝!
您需要使用extent
關鍵字參數而不是position
。 但是,您需要指定最大值和起點(即它必須是extent=[xmin, xmax, ymin, ymax]
)
在你的情況下,它看起來像:
extent=[xslice.start, xslice.stop+1, yslice.start, yslice.stop+1]
plt.contour(mask[xslice, yslice], extent=extent)
請注意,您可能需要使用origin
關鍵字參數(或翻轉 ymin 和 ymax)來控制解釋輸入數據的方式。
或者,您可以執行以下操作:
x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, mask[xslcie, yslice])
如果你在一個大的區域工作,它會有點低效,但它更干凈。
作為后一種方法的完整示例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
data = np.random.random((100,100))
xslice, yslice = slice(20, 30), slice(45, 65)
plt.imshow(data, cmap=cm.gray)
x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, data[xslice, yslice])
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.