Добавить пользовательскую границу к определенным ячейкам на графике matplotlib / seaborn

Прямо сейчас я использую кластерную карту Seaborn для создания кластерных тепловых карт — пока все хорошо.

Для определенного варианта использования мне нужно нарисовать цветные границы вокруг определенных ячеек. Есть ли способ сделать это? Или с pcolormesh в matplotlib, или любым другим способом?


person Justin Nelligan    schedule 08.07.2015    source источник


Ответы (1)


Вы можете сделать это, нанеся прямоугольный патч на ячейку, которую вы бы хочу выделить. На примере графика из документов Seaborn

import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
g = sns.clustermap(flights)

Мы можем выделить ячейку, выполнив

from matplotlib.patches import Rectangle
ax = g.ax_heatmap

ax.add_patch(Rectangle((3, 4), 1, 1, fill=False, edgecolor='blue', lw=3))
plt.show()

Это создаст график с выделенной ячейкой, например:

введите здесь описание изображения

Обратите внимание, что индексирование ячеек равно 0 на основе источника в левом нижнем углу.

person Simon Gibbons    schedule 08.07.2015
comment
Это просто замечательно! Большое спасибо! У меня также есть более сложный случай — что, если несколько выделенных ячеек, которые соприкасаются друг с другом, и я хочу нарисовать границы вокруг них, но избавиться от внутренних границ внутри блока выделенных ячеек? Может быть, я должен открыть новый вопрос для этого? - person Justin Nelligan; 08.07.2015
comment
Отвечая самому себе, я думаю, что смогу сделать это с помощью патча Polygon, спасибо, Саймон! - person Justin Nelligan; 08.07.2015
comment
Как вы добавляете патч, если ваш график ячеек не находится в переменной? Как вы помещаете обычную матрицу ячеек matplotlib в переменную для достижения этого метода? - person user7778287; 03.04.2019