Comment augmenter la taille du texte dans les cellules (annotations) d'une heatmap avec seaborn ?

Active 27 avril 2020    /    Viewed 1232    /    Comments 0    /    Edit


Exemple de comment augmenter la taille du texte dans les cellules (annotations) d'une heatmap avec seaborn ?

Créer une simple heatmap avec seaborn

Commençons par créer une simple heatmap avec seaborn, comme dans cet exemple

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


data = np.array([[25.55535942,  1.99598017,  9.78107706],
 [ 4.95758736, 39.68268716, 16.78109873],
 [ 0.45401194,  0.10003128,  0.6921669 ]])

df = pd.DataFrame(data=data)

fig = plt.figure(num=None, figsize=(10, 10), dpi=80, facecolor='w', edgecolor='k')

cmap = sns.cubehelix_palette(light=1, as_cmap=True)

res = sns.heatmap(df, annot=True, vmin=0.0, vmax=100.0, 
                  fmt='.2f', cmap=cmap, cbar_kws={"shrink": .82},
                  linewidths=0.1, linecolor='gray')

plt.title('Seaborn heatmap - increase annotations font size')

plt.savefig('seaborn_heatmap_increase_annotations_fontsize_01.png')              
plt.show()

on peut alors ajouter des annotations avec l'option:

annot=True

et ajouter

fmt='.2f'

pour contrôler le format (ici deux chiffres seulement après la virgule).

Comment augmenter la taille du texte dans les cellules (annotations) d'une heatmap avec seaborn ?

Augmenter la taille des annotations (option 1)

Par défaut la taille des annotations sont assez petites. Pour contrôler la taille des annotations dans les cellules de la heatmap, on peut alors utiliser l'option:

annot_kws={"size": 18},

dans la fonction seaborn heatmap(), exemple (ligne 18):

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


data = np.array([[25.55535942,  1.99598017,  9.78107706],
 [ 4.95758736, 39.68268716, 16.78109873],
 [ 0.45401194,  0.10003128,  0.6921669 ]])

df = pd.DataFrame(data=data)

fig = plt.figure(num=None, figsize=(10, 10), dpi=80, facecolor='w', edgecolor='k')

cmap = sns.cubehelix_palette(light=1, as_cmap=True)

res = sns.heatmap(df, annot=True, vmin=0.0, vmax=100.0, 
                  annot_kws={"size": 18},
                  fmt='.2f', cmap=cmap, cbar_kws={"shrink": .82},
                  linewidths=0.1, linecolor='gray')

plt.title('Seaborn heatmap - increase annotations font size')

plt.savefig('seaborn_heatmap_increase_annotations_fontsize_01.png')              
plt.show()

Comment augmenter la taille du texte dans les cellules (annotations) d'une heatmap avec seaborn ?

Augmenter la taille des annotations (option 2)

Autre solution, on peut utiliser

sns.set(font_scale=1.4)

pour changer la taille de font de la heatmap (change en même temps la taille des annotations, xlabels, ylabels, et du titre)

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


data = np.array([[25.55535942,  1.99598017,  9.78107706],
 [ 4.95758736, 39.68268716, 16.78109873],
 [ 0.45401194,  0.10003128,  0.6921669 ]])

df = pd.DataFrame(data=data)

fig = plt.figure(num=None, figsize=(10, 10), dpi=80, facecolor='w', edgecolor='k')

cmap = sns.cubehelix_palette(light=1, as_cmap=True)

sns.set(font_scale=1.4)

res = sns.heatmap(df, annot=True, vmin=0.0, vmax=100.0, 
                  fmt='.2f', cmap=cmap, cbar_kws={"shrink": .82},
                  linewidths=0.1, linecolor='gray')

res.invert_yaxis()

plt.title('Seaborn heatmap - increase annotations font size')

plt.savefig('seaborn_heatmap_increase_annotations_fontsize_02.png')              
plt.show()

Comment augmenter la taille du texte dans les cellules (annotations) d'une heatmap avec seaborn ?

Références


Card image cap
profile-image
Daidalos

Hi, I am Ben.

I have developed this web site from scratch with Django to share with everyone my notes. If you have any ideas or suggestions to improve the site, let me know ! (you can contact me using the form in the welcome page). Thanks!