2015-07-08 6 views
8

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

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

ответ

7

Вы можете сделать это, перестроив Rectangle patch на ячейку, которую вы хотели бы выделить. Используя в качестве примера сюжет из seaborn docs

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

Это произведет сюжет с выделенной ячейки следующим образом:

enter image description here

Примечание индексация ячеек равна 0 на основании начала в левом нижнем углу.

+0

Это просто замечательно, спасибо большое! У меня также есть более сложный случай: что, если несколько выделенных ячеек, которые касаются друг друга, и я хочу нарисовать границы вокруг них, но избавиться от внутренних границ внутри блока выделенных ячеек? Может быть, я должен открыть для этого новый вопрос? –

+0

Отвечая самому себе, я думаю, что смогу сделать это с помощью патча Polygon, спасибо Саймону! –