Вы можете добавить пользовательские аннотации к своей тепловой карте с использованием морского дна. В принципе, это только частный случай this answer. Теперь идея состоит в том, чтобы добавить строку и числа вместе, чтобы получить соответствующие пользовательские ярлыки. Если у вас есть массив strings
той же формы, как result
, который содержит соответствующие метки Вы можете добавить их вместе с помощью:
labels = (np.asarray(["{0} {1:.3f}".format(string, value)
for string, value in zip(strings.flatten(),
results.flatten())])
).reshape(3, 4)
Теперь вы можете использовать этот массив этикетки в качестве пользовательских меток для тепловой карты:
sns.heatmap(result, annot=labels, fmt="", cmap='RdYlGn', ax=ax)
Если поместить это вместе с помощью некоторых случайных входных данных код будет выглядеть следующим образом:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
results = np.random.rand(4, 3)
strings = strings = np.asarray([['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i'],
['j', 'k', 'l']])
labels = (np.asarray(["{0} {1:.3f}".format(string, value)
for string, value in zip(strings.flatten(),
results.flatten())])
).reshape(4, 3)
fig, ax = plt.subplots()
sns.heatmap(results, annot=labels, fmt="", cmap='RdYlGn', ax=ax)
plt.show()
результат будет выглядеть следующим образом :
Как вы можете видеть, строки теперь корректно добавляется к значениям в аннотации.