首页 > 解决方案 > 如何为重叠的 alpha 图层创建图例?

问题描述

使用 python 中的 matplotlib,我正在绘制时间序列中的分位数可视化图。但是我在创建代表百分位数的图例时遇到了问题。

这是我的图表,图例没有充分描述数据。 图表

想要的传说: 想要的图例

我用plt.fill_between.

标签: pythonmatplotlib

解决方案


您的绘图似乎是通过叠加透明图层创建的。您在最暗层中看到的颜色实际上是 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()

结果图


推荐阅读