2016-12-15 10 views
2

Я пробую пакет python Seaborn для создания тепловой карты. До сих пор мне удалось создать тепловую карту со значениями в ней. Моя последняя строка в коде для создания Heatmap является:Как добавить текст плюс значение в Python Seaborn Heatmap

sns.heatmap(result, annot=True, fmt='.2f', cmap='RdYlGn', ax=ax) 

Полученное изображение показано ниже: Heatmap with Values

Однако, я хочу также строку рядом значений. Например: AAPL -1.25 вместо -1.25 во втором поле второй строки. Есть ли способ добавить текст к значениям в тепловой карте?

ответ

0

Вы можете добавить пользовательские аннотации к своей тепловой карте с использованием морского дна. В принципе, это только частный случай 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() 

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

enter image description here

Как вы можете видеть, строки теперь корректно добавляется к значениям в аннотации.