Помечайте строки тепловой карты в matplotlib

#python #matplotlib

Вопрос:

У меня есть тепловая карта для нескольких строк, и эти строки разделены на несколько категорий категорий. Используя matplotlib (seabon), я могу построить тепловую карту и ее цветовую панель. И попробовал цветовую карту, чтобы также отобразить категорию.

Вот мой небольшой демо-код.

 import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig, (ax1, ax2) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [10, 1]})

df = pd.DataFrame(np.random.random((10, 5)), columns=["A", "B", "C", "D", "E"])
df['category'] = np.random.randint(low=0, high=3, size=(10,)) 
df = df.sort_values(['category'])

sns.heatmap(df[["A", "B", "C", "D", "E"]], annot=True, annot_kws={"size": 7}, cbar=True, ax=ax1)
sns.heatmap(df[['category']], ax=ax2, annot=True, cbar=False)
ax2.axes.get_yaxis().set_ticks([])

print(df)
plt.show()


 

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

В приведенном выше примере я хотел добавить столбец категории, чтобы аннотировать строки, вероятно, с помощью столбчатой диаграммы. Здесь я попытался использовать тепловую карту, скрыв цветовую панель и показав аннотацию. Но аннотации повторяются. Есть ли какой-нибудь хороший способ контролировать это?

Желаемый результат:

Что-то вроде этого (этот пример я скопировал из Интернета). введите описание изображения здесь
источник: