python - Scatter3D:如果添加了标签,则在 Matplotlib 中将颜色和 Alpha 指定为可迭代对象时出错
问题描述
我正在尝试改变 3D 散点图中每个标记的不透明度。我遇到了一个问题,它说颜色的长度不正确(即使它是正确的)。转到最简单的情况,可以用它重新创建它。
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(subplot_kw={'projection': '3d'})
elements = 100
x = np.linspace(0, 10, elements)
ax.scatter(x, x, x, alpha=np.linspace(1, 0.5, elements), c=['b' for _ in range(elements)], label='label')
fig.legend()
plt.show()
如果标签关键字参数被删除,它会起作用。如果您执行 2D 散点图,则无论标签如何,它都可以工作。我想知道这是否是一个错误,但想先看看我是否遗漏了什么。
解决方案
要完成您想要的,请尝试在散点图中使用set_facecolors
而不是直接使用alpha
and 。color
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(subplot_kw={'projection': '3d'})
elements = 200
z = np.linspace(0, 2*np.pi, elements)
x = np.cos(z)
y = np.sin(z)
h = ax.scatter(x, y, z, label='label')
h.set_facecolors([[0., 0., 1., alpha] for alpha in np.linspace(0.1, 0.7, len(x))])
fig.legend()
plt.show()
推荐阅读
- node.js - 在 nodejs 安装后,当执行 npm -v 命令时,它说前缀 -g 无法识别这是什么原因
- scala - 时间序列数据火花的数据处理
- machine-learning - 当掩码不等于零时,带有掩码的 GlobalAveragePooling
- reactjs - 警告:未知的事件处理程序属性“onCellClick”。会被忽略
- android - Gradle 4.9 + Lombok 1.18.0 失败
- angular - 如何处理具有两个主要部分的角度项目的路由器插座
- mysql - 限制 MySQL 表之间 JOIN 中的行数
- c# - Web App Bot 不包含 C# 的 LUIS 模板
- java - 无法使用 IntelliJ IDEA 运行配置获得 ActiveJDBC 动态检测
- ios - 使用未声明类型的 UITextfield