Мне часто приходится указывать распределение некоторых данных на сжатом графике, как показано на рисунке ниже. Я делаю это путем построения нескольких областей fill_between
, ограниченных квантилями распределения.Правильный цвет легенды для пересекающихся прозрачных слоев в Matplotlib
ax.fill_between(x, quantile1, quantile2, alpha=0.2)
в цикле, я сделать участки, как это путем вычисления квантилей 1 и 2 (как указано в легенде) в качестве 0% до 100% квантилей, затем 10% до 90%, и так далее, каждый fill_between
строчка сверху предыдущего слоя.
Вот выход с тремя слоями прозрачного цвета, а также срединной линии (0.5):
Однако легенда цвета не то, что я хотел бы им быть, так как они (естественно) используйте цвет каждого отдельного слоя, не принимая во внимание комбинированный эффект нескольких слоев.
ax.legend([0.5]+[['0.0%', '100.0%'], ['10.0%', '90.0%'], ['30.0%', '70.0%']])
Каков наилучший способ переписать значение цвета лица в команде легенды?
Я хотел бы избежать этого, сначала построив 0% до 10% с прозрачностью «0,2», затем от 10% до 30% с прозрачностью «0,4» и т. Д., Так как это займет в два раза больше времени вычислить и сделает код более сложным.
Большое спасибо. Решение без прозрачности является хорошим! – GunnarGeir
Кстати, для первого подхода не требуется определение альфа-функции. Вместо этого for-loop может обновить значение alpha, используя. alpha = 0.2 if i == 0 else alpha * (1-0.2) +0.2 Линия дескриптора затем будет использовать alpha = alpha. – GunnarGeir