我对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 重塑为列向量而不是行或类似的东西?我真的不明白为什么它适用于轮廓但不适用于 3d 图。任何意见将不胜感激。谢谢。