使用python中的4个数组数据绘制三维曲面图

使用python中的4个数组数据绘制三维曲面图,python,numpy,matplotlib,surface,Python,Numpy,Matplotlib,Surface,我试图用一个有4列的数据来绘制一个3D曲面图,即x、y、z、c。以下所示数据: 0.452 -172.799 -172.800 0.000000 0.452 -172.799 -158.400 -9.305322 0.452 -172.799 -144.000 -12.062071 0.452 -172.799 -129.600 -9.008698 0.452 -172.799 -115.200 -5.402975 0.452 -172.799 -100.800 -3.9

我试图用一个有4列的数据来绘制一个3D曲面图,即x、y、z、c。以下所示数据:

0.452  -172.799  -172.800 0.000000
0.452  -172.799  -158.400 -9.305322
0.452  -172.799  -144.000 -12.062071
0.452  -172.799  -129.600 -9.008698
0.452  -172.799  -115.200 -5.402975
0.452  -172.799  -100.800 -3.957608
0.452  -172.799  -86.400 -5.113347
0.452  -172.799  -72.000 -4.784993
0.452  -172.799  -57.600 -6.659095
0.452  -172.799  -43.200 -4.405937
0.452  -172.799  -28.800 -6.110385
0.452  -172.799  -14.400 -5.896424
0.452  -172.799  -0.001 -4.405937
0.452  -172.799  14.399 -6.489442
0.452  -172.799  28.799 -5.662057
0.452  -172.799  43.199 -7.710180
0.452  -172.799  57.599 -7.710180
0.452  -172.799  71.999 -8.011659
0.452  -172.799  86.399 -6.489442
0.452  -172.799  100.799 -6.817796
0.452  -172.799  115.199 -5.662057
0.452  -172.799  129.599 -5.402975
0.452  -172.799  143.999 -5.662057
0.452  -172.799  158.399 -3.957608
0.452  -172.799  172.799 -2.701488
0.615  -172.799  -172.800 -8.444175
0.615  -172.799  -158.400 -13.183417`
前三列代表x、y、z,第四列c为色条,即表面颜色根据c给出

现在,我试着编写一些简单的代码,但仍然会出错。我试过的是-

import pylab as p
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.cm as cm
data = np.genfromtxt('test1.pmf')
x=data[:,1]
y=data[:,2]
h=data[:,3]
z=data[:,0]
datamin=min(h)
datamax=max(h)
fig=p.figure()
ax=fig.add_subplot(111, projection='3d')
pmf = ax.plot_surface(x, y, z, facecolors=cm.ocean(h))
p.colorbar(pmf)
p.show()    
我犯了一个错误,比如

pmf = ax.plot_surface(x, y, z, facecolors=cm.ocean(h))
File "/usr/lib/pymodules/python2.7/mpl_toolkits/mplot3/axes3d.py",line663,in            
plot_surface rows, cols = Z.shape ValueError: need more than 1 value to unpack
你知道我在这方面哪里做错了吗


非常感谢你

绘图曲面的
功能。在您的代码片段中,
Z
变量是一个1D数组,因此
Z.shape
无法解压缩为两个元素(行和列)

我相信这样的事情是正确的:

x, y = np.meshgrid(x, y)
z = z.reshape(x.shape)

我尝试给一个网格,因为我的数据是4D数组,我仍然有一个错误,我对脚本的修改我尝试给一个网格,因为我的数据是4D数组,我仍然会得到一个错误,我对脚本的修改-<代码> x,y= NP。席格格(Xi,Yi)z=GrDigDATA(x,y,z,席,yi)
我仍然收到一个错误,说
TypeError:unhabable type:'numpy.ndarray'
您可以更新您的问题并显示新代码和新错误回溯吗?您提供的数据中的
x
-坐标不变(第二列)。你认为那是一个什么样的表面?