Python Matplotlib: как добавить «плохой» цвет в легенду? - PullRequest
1 голос
/ 14 апреля 2020

Цветовая карта в matplotlib позволяет помечать "плохие" значения, то есть NaN, указанным цветом c. Когда мы строим цветную полосу впоследствии, этот цвет не включается. Есть ли предпочтительный подход, чтобы иметь как непрерывную цветовую полосу, так и отдельную легенду для указанного c цвета для плохих значений?

Редактировать: Конечно, можно использовать «расширить» функциональность . Однако это решение не является удовлетворительным. Функция легенды / цветовой панели заключается в разъяснении значения цветов для пользователя. На мой взгляд, это решение не сообщает, что значение является NaN.

Пример кода:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

data = np.random.rand(10, 10)
data[0:3, 0:3] = np.nan  # some bad values for set_bad

colMap = cm.RdBu
colMap.set_bad(color='black')

plt.figure(figsize=(10, 9))
confusion_matrix = plt.imshow(data, cmap=colMap, vmin=0, vmax=1)
plt.colorbar(confusion_matrix)
plt.show()

, который выдает:

Confusion Matrix

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Элемент легенды может быть создан и использован следующим образом:

from matplotlib.patches import Patch

legend_elements = [Patch(facecolor=colMap(np.nan), label='Bad values')]
plt.legend(handles=legend_elements)
0 голосов
/ 14 апреля 2020

Вы можете сделать это, используя один из подходов, используемых для черчения вне диапазона, показанного в https://matplotlib.org/3.1.1/tutorials/colors/colorbar_only.html#discrete -intervals-colorbar

Установите цвет плохого значения, например, на -999 и используйте ключевое слово extend.

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

Другим способом может быть использование cmap. set_bad () . Пример можно найти здесь .

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