表面绘制结构化数组错误

时间:2015-11-30 15:55:59

标签: python plot surface mplot3d structured-array

我一直试图在3d图中表示这个结构化数组,希望以后能够映射它。

import matplotlib.pyplot as plt
import numpy as np
import os
from mpl_toolkits.mplot3d import Axes3D

path = '/users/username/Desktop/untitled folder/python files/MSII_phasespace/'

os.chdir( path )

fig = plt.figure()
ax = fig.gca( projection='3d')


data = np.load('msii_phasespace.npy',mmap_mode='r')

# data.size: 167197
# data.shape: (167197,)
# data.dtype: dtype([('x', '<f4'), ('y', '<f4'), ('z', '<f4'),
  # ('velx', '<f4'), ('vely', '<f4'), ('velz', '<f4'), ('m200', '<f4')])



u = data[:500]
v = data[:500]

xi = u['x']
yi = v['y']


X, Y = np.meshgrid(xi, yi)
Axes3D.plot_surface(X, Y, data)


plt.show()

运行此导致我出现此错误

unbound method plot_surface() must be called with Axes3D instance as first argument (got memmap instance instead)

我不完全确定它在问我什么。我对此有点初学者,所以我很感激能得到的任何帮助。另外,包含z的第三个值是否适用?

我还在#。

中包含了尺寸,形状和类型

1 个答案:

答案 0 :(得分:1)

plot_surface的调用必须在Axes3D的特定实例上进行,而不是在课堂上。 Python实例方法隐式具有第一个self参数,当您在对象上调用方法时,该参数将被传入。

这对您来说意味着Axes3D.plot_surface(X, Y, data)应为ax.plot_surface(X, Y, data)ax对象告诉Python要调用plot_surface()的哪一组轴。