2016-06-02 12 views
6

Próbuję pokazać tabelę procentach jako mapę cieplną w Seaborn:Dodawanie jednostek do HeatMap adnotacji w Seaborn

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

Jednak chciałbym znak procent pojawiać po każdym numerze w adnotacjach HeatMap . Flaga fmt tylko wydaje się akceptować specyfikatory formatu liczb. Czy jest jakiś sposób, aby to zrobić w Seabornie lub w jakimś dostosowaniu matplotlib?

Odpowiedz

7

trzeba iteracyjne nad wszystkie wartości tekście mapę cieplną i dodać% znak:

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

Czekam na dodanie znaków procentu do adnotacji (np. 0.23% na twojej figurze), a nie do paska kolorów. – Jsl

+1

OK, spójrz na powyższy przykład. – Serenity

+1

Konwersja ".1f" na ".1%" rozwiązała problem. –

3

zastąpić ".1f" na "0,1%". I powinien rozwiązać twój problem.

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