1

我发现了一些高程数据作为矩阵。我contourfmatplotlib. 这看起来像图的左上角。我想稍后在代码的其他部分重用这些轮廓。在某些时候,我想一次只重绘一个给定的轮廓。为此,我使用 simpleplt.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,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)

在此处输入图像描述

4

0 回答 0