在一组补丁周围画一个周长?

2024-05-06 01:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

一些背景:我正在尝试使用FITS数据制作区域文件。我使用astropymatplotlib.pyplot来绘制我感兴趣的部分的二维直方图,并编写了一个程序来存储这些数据并确定哪些数据属于感兴趣的区域。然后,我使用matplotlib.patches来“突出显示”2D直方图中限定为区域一部分的区域

下面是我代码的绘图部分:

indices = range(1, 1295, 1)
NBINS=(360,360)
fig,ax = plt.subplots(1)
ax.hist2d(data['DET1X'], data['DET1Y'], NBINS, range=[[1, 360], [1,360]], cmap='gray')
ax.set_xlabel('DET1X')
ax.set_ylabel('DET1Y')
for i in region_bins:
    cornerx = (indices[i]// 36)*10
    cornery = (indices[i] % 36)*10
    SL = patches.Rectangle((cornerx,cornery), 10, 10, edgecolor='none', facecolor='yellow', alpha = 0.4)
    ax.add_patch(SL)
plt.show()

我得到的结果是:result

现在,我想在这个区域周围画一个周长,所以基本上是一个多边形,所有箱子的黄色边缘都与灰色背景相交。多边形必须是所有正方形的并集,所以它在左侧是锯齿状的,在底部和右侧大部分是直的。它还需要包括所有的小洞,而不是有洞本身。我该怎么做?我之前的问题是关于我不熟悉的语言中的情况,这些语言对于特定的项目非常具体,我自己的问题也是如此。最终,我希望能够制作一个文件,只列出该区域相对于原始2D直方图的多边形坐标。有什么想法


Tags: 文件数据区域datamatplotlibrangepltax