Как создать легенду для перекрытия альфа-слоев? - PullRequest
1 голос
/ 27 мая 2020

С помощью matplotlib в python я создаю график, визуализирующий квантили во временных рядах. Но у меня возникают проблемы с созданием легенды, которая представляет процентили.

Это моя диаграмма, легенда не описывает данные адекватно. chart

Желаемая легенда: desired legend

Я создал график с помощью plt.fill_between.

1 Ответ

1 голос
/ 27 мая 2020

Кажется, что ваш сюжет создан путем наложения прозрачных слоев. Цвет, который вы видите в самом темном слое, на самом деле является цветом 10 объединенных слоев.

Для объединения альфа-слоев используется следующая формула: alpha = alpha + alpha0 * (1 - alpha), как, например, объясняется в этой статье википедии .

Таким образом, можно пройти по маркерам легенды и соответствующим образом установить их альфа.

Вот пример кода. Если у вас есть дополнительные ручки, например, для кривой "mediana", будьте осторожны, чтобы пропустить их в l oop.

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()

resulting plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...