从数据文件中获取Python 3d图,得到valueError

时间:2013-07-02 01:20:22

标签: 3d matplotlib mplot3d

我对python比较陌生。我正在从文件中的数据中执行不同类型的绘图。我成功地绘制了等高线图,并希望在3D绘图上绘制相同的数据。因此数据已经在X,Y和Z数组中。存在N×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绘图。任何意见将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

是的,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)

希望这有效