python - 如何为重叠的 alpha 图层创建图例?
问题描述
使用 python 中的 matplotlib,我正在绘制时间序列中的分位数可视化图。但是我在创建代表百分位数的图例时遇到了问题。
这是我的图表,图例没有充分描述数据。
想要的传说:
我用plt.fill_between
.
解决方案
您的绘图似乎是通过叠加透明图层创建的。您在最暗层中看到的颜色实际上是 10 个组合层的颜色。
要组合 alpha 层,以下公式成立: ,如本维基百科文章alpha = alpha + alpha0 * (1 - alpha)
中所解释的示例。
因此,可以逐步浏览图例句柄并适当地设置它们的 alpha。
这是一些示例代码。如果您有额外的句柄,例如“中位数”曲线,请小心在循环中跳过它。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 30, 100)
y = np.zeros_like(x)
for i in range(1, 10):
y += 10 + np.abs(np.random.uniform(-1, 1, y.size).cumsum())
plt.fill_between(x, y, color='b', alpha=0.1, label=f'Pct{i * 10}')
plt.plot(x, y / 2, 'b-', label='mediana')
leg = plt.legend(loc='upper left', bbox_to_anchor=(1.02, 1.05))
alpha0 = 0.1
alpha = alpha0
for h in leg.legendHandles[:0:-1]:
h.set_alpha(alpha)
alpha = alpha + alpha0 * (1 - alpha)
plt.tight_layout()
plt.show()
推荐阅读
- javascript - 按属性和链接文本对 div 中包含的链接进行排序
- vim - 如何在不取消vim中的视觉选择的情况下运行命令
- apache-kafka - 卡夫卡连接 - 变形金刚 - 黑名单嵌套字段
- python-3.x - AttributeError:模块“sklearn.linear_model”没有属性“linearRegression”?
- colors - BT.601/T.871:与 RGB(16 位)之间的转换
- php - 如何使用 PHP Carbon 格式化日期范围?
- memory - 为什么较新的英特尔 CPU 不支持停滞周期后端的性能计数器?
- api - 如何在 10 月 15 日更新后获取 Instagram 帐户的用户 ID 和访问令牌?
- c# - 正则表达式在将表达式动态添加到列表时出错
- apache - 如何在 ubuntu 18.04 中修复 apache2 安装