set_alpha报错TypeError: alpha must be numeric or None, not <class 'numpy.ndarray'>
时间: 2024-03-27 22:37:19 浏览: 241
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
非常抱歉,我的回答有误。`set_alpha()` 方法需要传入一个数值类型的透明度,而不是一个透明度数组。如果要设置面的透明度,可以将透明度数组应用到面的颜色上,并使用 `set_facecolor()` 方法设置面的颜色。以下是修改后的代码:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
# 生成随机数据
x, y, z = np.random.rand(3, 100)
# 创建图窗
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制散点图
ax.scatter(x, y, z)
# 设置透明度映射
cmap = plt.cm.Blues
alphas = np.linspace(0, 1, len(x))
colors = cmap(alphas)
ax.set_facecolor(colors)
ax.set_alpha(None)
# 显示图形
plt.show()
```
在这个示例中,我们先将颜色映射应用到透明度数组上,然后使用 `cmap()` 方法将透明度数组转换为颜色数组。接着,使用 `set_facecolor()` 方法设置面的颜色,并使用 `set_alpha(None)` 方法清除默认的透明度。这样,我们就可以同时控制面的颜色和透明度了。
阅读全文