我需要可视化一个立方体,于是决定使用matplotib for python。
由于某种原因,代码拒绝正常运行。我试用了GeeksForgeeks和Matplotlib文档示例中的代码,两者都不起作用。
是否存在兼容性问题或我做错了什么?
例如此代码(来自geeksforgeks):
# Import libraries
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# Create axis
axes = [5, 5, 5]
# Create Data
data = np.ones(axes, dtype=np.bool)
# Control Transparency
alpha = 0.9
# Control colour
colors = np.empty(axes + [4], dtype=np.float32)
colors[0] = [1, 0, 0, alpha] # red
colors[1] = [0, 1, 0, alpha] # green
colors[2] = [0, 0, 1, alpha] # blue
colors[3] = [1, 1, 0, alpha] # yellow
colors[4] = [1, 1, 1, alpha] # grey
# Plot figure
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Voxels is used to customizations of
# the sizes, positions and colors.
ax.voxels(data, facecolors=colors, edgecolors='grey')
输出:
C:\Users\User\Desktop\Cube visualization\cube.py:10: FutureWarning: In the future `np.bool` will be defined as the corresponding NumPy scalar. (This may have returned Python scalars in past versions.
data = np.ones(axes, dtype=np.bool)
Traceback (most recent call last):
File "C:\Users\User\Desktop\Cube visualization\cube.py", line 10, in <module>
data = np.ones(axes, dtype=np.bool)
^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\__init__.py", line 284, in __getattr__
raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'bool'. Did you mean: 'bool_'?
Process finished with exit code 1
我使用的是Python的最新版本,刚刚使用python -m pip install -U matplotlib
安装了matplotib
2条答案
按热度按时间tquggr8v1#
np.bool
很久以前就被弃用了,最近被删除了,取而代之的是内置的bool
,所以只需将np.bool
更改为bool
。“教程”站点几乎总是过时的,因为没有人在修订它们,所以您应该查看matplotlib和numpy的官方文档,例如cube documentation
您还在代码末尾缺少一个
plt.show()
。ep6jt1vc2#
我已经投票赞成艾哈迈德的答案,但我忍不住张贴结果的图像。
,当然,它是使用
data = np.ones(axes, dtype=bool)
代替data = np.ones(axes, dtype=np.bool)
获得的(以及其他技巧,与OP问题无关)。