Объект 'Axes3DSubplot' не имеет атрибута 'voxels'
Я пытаюсь использовать matplotlib для отображения шума 3d-перлина. Я прочитал, что voxels
метод из Axes3DSubplot
может быть использован для простого отображения значений. Тем не менее, когда я пытаюсь позвонить ax.voxels(voxels, facecolors=colors, edgecolor='k')
это исключение AttributeError: 'Axes3DSubplot' object has no attribute 'voxels'
, Вот мой код:
import noise
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x, y, z = np.indices((8,8,8))
voxels = np.zeros((8,8,8), dtype=np.bool)
for xp in range(8):
for yp in range(8):
for zp in range(8):
voxels[xp,yp,zp] = True if abs(noise.pnoise3(xp/8,yp/8,zp/8)) > 0.5 else False
colors = np.empty(voxels.shape, dtype=object)
colors[voxels] = 'green'
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.voxels(voxels, facecolors=colors, edgecolor='k') #EXCEPTION
plt.show()
Моя версия на Python 3.6.2 (Anaconda 64-bit). Моя версия matplotlib - 2.0.2. Я использовал как ipynb (module://backend_interagg
) а также Qt5Agg
бэкэнды, которые оба дают одну и ту же проблему. Я использую Windows 10.
2 ответа
Решение
voxels
метод был введен в matplotlib 2.1.
Ни в одной более ранней версии matplotlib этот метод недоступен.
2018-06-01 03:34