问题描述
我找到了一些作为矩阵的高程数据。我用带有 contourf
的 matplotlib
图绘制了数据。这看起来像图的左上角。我想稍后在代码的其他部分重用这些轮廓。在某些时候,我只想一次重绘一个给定的轮廓。为此,我使用简单的 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)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)