微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图填充从 matplotlib 轮廓绘制多边形,但它们似乎没有关闭

如何解决试图填充从 matplotlib 轮廓绘制多边形,但它们似乎没有关闭

我找到了一些作为矩阵的高程数据。我用带有 contourfmatplotlib 图绘制了数据。这看起来像图的左上角。我想稍后在代码的其他部分重用这些轮廓。在某些时候,我只想一次重绘一个给定的轮廓。为此,我使用简单的 plt.fill 函数并从 contours segments获取多边形。右上角是第一个轮廓,左下角是第二个,右下角是第三个……等等。现在你看到了问题。从 plt.contourf 输出的多边形似乎没有闭合。或者发生了其他事情,但我不确定是什么。你知道我该如何解决这个问题吗?

这里给出了我使用的代码

import matplotlib.pyplot as plt
import matplotlib.cm as cm
    
%matplotlib inline

im = Image.open('someImage.tif')

imTif = np.array(im)     
im_df = pd.DataFrame(imTif)

这里我对我拥有的图像进行了一些处理,但这并不重要。最后我只有一个数字矩阵

lenY,lenX = im_df.shape
fig1 = plt.figure()
ax1 = fig1.add_subplot(2,2,1)
contour_set = ax1.contourf(np.arange(0,lenX),-np.arange(0,lenY),im_df,cmap='terrain',\
                          levels=levels)
plt.colorbar(contour_set)

xi,xf = ax1.get_xlim()
yi,yf = ax1.get_ylim()

cnorm = plt.normalize(vmin=levels[0],vmax=levels[-1])
clevels = [levels[0]] + list(0.5*(levels[1:]+levels[:-1])) + [levels[-1]]
colors = plt.cm.terrain(cnorm(clevels))

segments = contour_set.allsegs

for contour_nb in range(0,3):
    ax = fig1.add_subplot(2,2+contour_nb)
    for polygon in segments[contour_nb]:
        xs,ys = zip(*polygon)
        ax.fill(xs,ys,color=colors[contour_nb+1])
    
    ax.set_xlim(xi,xf)
    ax.set_ylim(yi,yf)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。