Или существует возможность определить произвольную легенду независимо от данных кривых? Определенная пользователем легенда в python
ответ
Использование fill_bettween
для создания ваших данных автоматически включит заполненную область в легенде.
Чтобы включить области, в которых накладываются два набора данных, вы можете объединить дескрипторы легенды из обоих наборов данных в один дескриптор описания.
Как указано в комментариях, вы также можете определить любой произвольный символ дескриптора с прокси-сервером.
Наконец, вы можете точно определить, какие дескрипторы и метки вы хотите отображать в легенде, независимо от данных, отображаемых на вашем графике.
См MWE ниже, иллюстрирует пункты, указанные выше:
import matplotlib.pyplot as plt
import numpy as np
plt.close('all')
# Gererate some datas:
x = np.random.rand(50)
y = np.arange(len(x))
# Plot data:
fig, ax = plt.subplots(figsize=(11, 4))
fillA = ax.fill_between(y, x-0.25, 0.5, color='darkolivegreen', alpha=0.65, lw=0)
fillB = ax.fill_between(y, x, 0.5, color='indianred', alpha=0.75, lw=0)
linec, = ax.plot(y, np.zeros(len(y))+0.5, color='blue', lw=1.5)
linea, = ax.plot(y, x, color='orange', lw=1.5)
lineb, = ax.plot(y, x-0.25, color='black', lw=1.5)
# Define an arbitrary legend handle with a proxy:
rec1 = plt.Rectangle((0, 0), 1, 1, fc='blue', lw=0, alpha=0.25)
# Generate the legend:
handles = [linea, lineb, linec, fillA, fillB, (fillA, fillB),
rec1, (fillA, fillB, rec1)]
labels = ['a', 'b', 'c', 'A', 'B', 'A+B', 'C', 'A+B+C']
ax.legend(handles, labels, loc=2, ncol=4)
ax.axis(ymin=-1, ymax=2)
plt.show()
Да, вы абсолютно правы ian_itor, tacaswell и Жан-Себастьен, определяемые пользователем легенда, кажется, единственным решением , кроме того, я сделал различную ширину линии для той области, которую можно отличить от кривых, а игра с alpha получила нужный цвет.
handles, labels = ax.get_legend_handles_labels()
display = (0,1,2,3,4)
overlap_1 = plt.Line2D((0,1),(0,0), color='firebrick', linestyle='-',linewidth=15, alpha = 0.85)
overlap_2= plt.Line2D((0,1),(0,0), color='darkolivegreen',linestyle='-',linewidth=15, alpha = 0.65)
over_lo_3= plt.Line2D((0,1),(0,0), color='indianred',linestyle='-',linewidth=15, alpha = 0.75)
ax.legend([handle for i,handle in enumerate(handles) if i in display]+[overlap_1 , overlap_2 , overlap_3 ],
[label for i,label in enumerate(labels) if i in display]+['D','F','G'])
Вместо этого игры, чтобы найти правильный цвет для 'over_lo_3', было бы возможно также просто объединить дескриптор' overlap_1' и 'overlap_2', просто используя' (overlap_1, overlap_2) 'вместо' over_lo_3', когда вы определяете легенду , Но ваше решение работает хорошо, так хорошая работа. –
Получил! благодаря! – Hamidreza
- 1. Определенная пользователем функция Python в xlwings
- 2. Определенная пользователем функция Slice в скрипте python
- 3. Определенная пользователем библиотека
- 4. Определенная пользователем валидация
- 5. Определенная пользователем колонка в Odoo
- 6. Определенная пользователем ошибка в YACC
- 7. Регистрация искры SQL Определенная пользователем функция в классе Python
- 8. Определенная пользователем таблица и переменная
- 9. Определенная пользователем база данных CoreData?
- 10. Определенная пользователем динамическая таблица jQuery
- 11. Определенная пользователем функция DB2 Java
- 12. Определенная пользователем или объектная ошибка
- 13. Определенная пользователем картина не отображается
- 14. Определенная пользователем ошибка на дату
- 15. Определенная пользователем функция получения пропущенных
- 16. Определенная пользователем функция уничтожения (бесплатно)
- 17. Python Легенда в 3dplot
- 18. Определенная пользователем функция, эквивалентная strlen() в C
- 19. Определенная пользователем палитры в сочетании с cbrange
- 20. Определенная пользователем строка, вывод столбца в C++
- 21. Определенная пользователем сортировка нескольких столбцов в Excel
- 22. Использование переменных в SAS Определенная пользователем функция
- 23. Функция gotoxy(), определенная пользователем в C++
- 24. Ссылка VBA ADO Определенная пользователем ошибка
- 25. Легенда в python без меток
- 26. Одна легенда в подзаголовках python
- 27. Функция (определенная пользователем) как аргумент функции
- 28. Определенная пользователем функция mySQL, если существует запись
- 29. Excel Определенная пользователем или объектная ошибка
- 30. Определенная пользователем функция с оператором CASE
Посмотрите [на эту тему] (http://stackoverflow.com/questions/13303928/how-to-make-custom-legend-in-matplotlib). Ответ описывает создание пользовательских записей легенд, которые могут быть тем, что вы хотите. – Ian
См. Http://matplotlib.org/users/legend_guide.html#creating-artists-specifically-for-adding-to-the-legend-aka-proxy-artists, который является примером именно этого варианта использования. – tacaswell