首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib中等值线子图位置的设置

Matplotlib中等值线子图位置的设置
EN

Stack Overflow用户
提问于 2012-11-15 11:08:11
回答 1查看 453关注 0票数 2

我正在使用SciPy识别CT图像中的肿瘤。一旦我确定了包含肿瘤的切片,我将使用以下命令检索切片:

代码语言:javascript
复制
slice_x, slice_y = ndimage.find_objects(label_im==label)[0]

然后我绘制完整的图像,如下所示:

代码语言:javascript
复制
plt.imshow(image, cmap='gray')

我希望将提取的切片(包含肿瘤)的轮廓覆盖在原始图像的适当位置上。然而,我不能让等高线图位于适当区域的顶部。相反,等高线图始终位于图像的左上角。下面是我使用的代码:

代码语言:javascript
复制
plt.contour(mask[slice_x, slice_y], position=(slice_x.start, \
slice_y.start), linewidths=2, colors='r')

结果如下:

如何在主图中设置轮廓图的位置?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 11:23:12

您需要使用extent关键字参数而不是position。然而,你需要指定一个最大值和一个起始值(即它需要为extent=[xmin, xmax, ymin, ymax])

在您的示例中,它看起来如下所示:

代码语言:javascript
复制
extent=[xslice.start, xslice.stop+1, yslice.start, yslice.stop+1]
plt.contour(mask[xslice, yslice], extent=extent)

请注意,您可能需要使用origin关键字参数(或翻转ymin和ymax)来控制解释输入数据的方式。

或者,您可以执行类似以下操作:

代码语言:javascript
复制
x, y = np.mgrid[xslice, yslice]
plt.contour(x, y, mask[xslcie, yslice])

如果你工作的区域很大,效率会有点低,但它要干净得多。

作为后一种方法的完整示例:

代码语言:javascript
复制
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()

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13390993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档