首页 > 解决方案 > 在一组补丁周围画一个周长?

问题描述

一些背景:我正在尝试使用 FITS 数据制作区域文件。我使用astropymatplotlib.pyplot绘制了我感兴趣的部分的二维直方图,并编写了一个程序,该程序对该数据进行分箱并识别哪些分箱属于感兴趣的区域。然后,我习惯于matplotlib.patches“突出显示”符合该区域一部分的 2D 直方图的 bin。

这是我的代码的绘图部分:

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()

这是我的结果: 结果

现在,我想在该区域周围画一个周长,所以基本上是一个多边形,所有垃圾箱的黄色边缘都与灰色背景相交。多边形需要是一个由所有正方形组合而成的形状,因此它将在左侧呈锯齿状,而在底部和右侧大部分是直的。它还需要包括所有的小孔,而不是本身有孔。我怎样才能做到这一点?我以前研究过的问题是处理我不熟悉的语言中的情况,这些语言非常特定于特定项目,就像我自己的问题一样。最终,我希望能够制作一个仅列出该区域相对于原始 2D 直方图的多边形坐标的文件。想法?

标签: pythonmatplotlibpatchastropyfits

解决方案


推荐阅读