[英]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.