我对python比较陌生。我正在根据文件中的数据进行不同类型的绘图。我成功地绘制了等高线图,并希望在3D图上绘制相同的数据。所以数据已经在X、Y和Z数组中了。存在Nx X值、Ny Y值,并且Z是(Nx,Ny)阵列。我正在尝试的最新版本的代码如下:
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import matplotlib.cm as cm
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.RdBu)
plt.show()
所以,以前的X、Y和Z是从一个文件中收集到上面提到的数组中的。但当我尝试运行这个时,我会得到以下结果:
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.RdBu)
File "/....../axes3d.py", line 1358, in plot_surface
X.shape = (rows,cols)
ValueError: total size of new array must be unchanged
是不是因为某种原因,X应该是一个二维数组?或者我需要将X重塑为列向量,而不是行或类似的东西吗?我真的不明白为什么它适用于轮廓,但不适用于三维绘图。如有任何意见,我们将不胜感激。谢谢
是的,X和Y应该是二维的。
尝试:
import numpy as np
X2D, Y2D = np.meshgrid(X,Y)
ax.plot_surface(X2D, Y2D, Z, rstride=1, cstride=1, cmap=cm.RdBu)
希望这能起作用