2016-06-02 38 views
6

sto cercando di mostrare una tabella di percentuali come heatmap in Seaborn:Aggiunta di unità di heatmap annotazione Seaborn

sns.heatmap(S, annot=True, fmt=".1f", linewidths=1.0, square=1) 

Tuttavia, mi piacerebbe il segno di percentuale ad apparire dopo ogni numero nelle annotazioni HeatMap . Il flag fmt sembra accettare solo identificatori di formato numerico. C'è un modo per farlo all'interno di Seaborn o con qualche modifica di Matplotlib?

risposta

7

si deve iterare su tutti i valori di testo di una mappa termica e aggiungere% segno:

import matplotlib.pyplot as plt 
import seaborn as sns 
import numpy as np 
from matplotlib.ticker import FuncFormatter 

sns.set() 
fig, ax0 = plt.subplots(1,1) 
data = np.array([[10.01,20.20],[-0.23,0.],[23.1049,-100.000000]]) 
ax = sns.heatmap(data, annot=True, fmt = '.1f', square=1, linewidth=1.) 
for t in ax.texts: t.set_text(t.get_text() + " %") 
plt.show() 

enter image description here

+0

Sto cercando di aggiungere segni di percentuale alle annotazioni (ad esempio 0,23% nella figura), non alla barra di colore. – Jsl

+1

OK, guarda l'esempio sopra. – Serenity

+1

La conversione di '.1f' in '.1%' ha risolto il problema per me. –

3

sostituire la ".1f" a "0,1%". E dovrebbe risolvere il tuo problema.

sns.heatmap(S, annot=True, fmt=".1%", linewidths=1.0, square=1)