曲面绘制结构化数组错误
Surface plotting structured array error
我一直试图在 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 值是否适用?
我还在 #.
中包含了大小、形状和数据类型
对 plot_surface
的调用必须在 Axes3D
的特定实例上进行,而不是在 class 上进行。 Python 实例方法隐式具有第一个 self
参数,当您在对象上调用方法时传入该参数。
这对您来说意味着 Axes3D.plot_surface(X, Y, data)
应该是 ax.plot_surface(X, Y, data)
。 ax
对象告诉 Python 在哪一组轴上调用 plot_surface()
。
我一直试图在 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 值是否适用?
我还在 #.
中包含了大小、形状和数据类型对 plot_surface
的调用必须在 Axes3D
的特定实例上进行,而不是在 class 上进行。 Python 实例方法隐式具有第一个 self
参数,当您在对象上调用方法时传入该参数。
这对您来说意味着 Axes3D.plot_surface(X, Y, data)
应该是 ax.plot_surface(X, Y, data)
。 ax
对象告诉 Python 在哪一组轴上调用 plot_surface()
。