Ошибка структурированного массива при построении поверхности

Я пытался представить этот структурированный массив в трехмерном графике в надежде позже отобразить его.

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?

Я также включил размер, форму и dtype в #.

1 ответ

Решение

Призыв к plot_surface должно быть сделано в конкретном случае Axes3Dне в классе. Методы экземпляра Python неявно имеют первый self параметр, который передается при вызове метода для объекта.

Что это значит для вас? Axes3D.plot_surface(X, Y, data) должно быть ax.plot_surface(X, Y, data), ax объект сообщает Python, какой набор осей вызывать plot_surface() на.

Другие вопросы по тегам