繁体   English   中英

如何在 matplotlib 中的 plot 轮廓

[英]How to plot contours in matplotlib

我有一组 x 值、y 值和每个 (X,Y) 对应的 z 值

I'm trying to plot a contour plot in matplotlib but whenever I try to plot the contours I get the following error:-

TypeError: Input z must be 2D, not 1D

当我对每个 (x,y) 点只有一个值时,我不明白我应该如何输入 Z 值的二维数组

编辑:抱歉不包括我的代码

X= [7.7, 7.7, 7.7, 7.7, 7.7, 6.7, 6.7, 6.7, 6.7, 6.7, `5.8, 5.8, 5.8, 5.8, 5.8, 4.8, 4.8, 4.8, 4.8, 4.8, 3.9, 3.9, 3.9, 3.9, 3.9, 2.9, 2.9, 2.9, 2.9, 2.9]`
Y=  [3, 4, 5, 6, 7, 2, 4.5, 5, 6.7, 8, 3.2, 4.5, 5.5, 6, 7.5, 4.3, 8.5, 7, 6.4, 3.5, 2.4, 4.5, 6.8, 7.5, 8, 2.5, 4.3, 5.4, 7.6, 8.2]
Z=  [1, 1, 1, 1, 1, 1.5, 1.5, 1.5, 1.5, 1.5, 2, 2, 2, 2, 2, 2.5, 2.5, 2.5, 2.5, 2.5, 3, 3, 3, 3, 3, 3.5, 3.5, 3.5, 3.5, 3.5]

X, Y = np.meshgrid(x, y)

fig,ax=plt.subplots(1,1)
ax.plot(X,Y,color='green')
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
plt.show()

您必须在那里检查 Matplotlib 中的轮廓 function(contourf 相同)。 Z 必须是一个二维数组,而 X,Y 可以是一维数组。

在你的情况下:

X.shape = (30, 30)
Y.shape = (30, 30)
len(z) = 30

我建议您使用np.reshape()重塑您的 Z 数组以获得您想要的维度或复制( np.tile )向量以创建 30 x 30 矩阵矩阵,但这取决于您的数据的确切 Z 和X,Y 坐标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM