簡體   English   中英

在 Matplotlib 中設置輪廓子圖的位置

[英]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')

結果如下:

CT圖像

如何在主圖中設置等高線圖的位置? 謝謝!

您需要使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM