Comment augmenter la taille des labels sur les axes d'une heatmap avec seaborn en python ?

Active 28 avril 2020    /    Viewed 2221    /    Comments 0    /    Edit


Exemples de comment augmenter la taille des labels sur les axes d'une heatmap avec seaborn en python:

1 -- 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,columns=['C1','C2','C3'], index=['A','B','C'])

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()


#res.set_xticklabels(res.get_xmajorticklabels(), fontsize = 18)
#res.set_yticklabels(res.get_ymajorticklabels(), fontsize = 18)

plt.title('Seaborn heatmap - change font size')

plt.savefig('seaborn_heatmap_ticklabels_font_size_04.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 des labels sur les axes d'une heatmap avec seaborn en python ?

2 -- Augmenter la taille des labels sur l'axe des x

Pour augmenter la taille des labels sur l'axe des x, il suffit d'ajouter la ligne suivante:

res.set_xticklabels(res.get_xmajorticklabels(), fontsize = 18)

Note: on peut aussi incliner les labels avec rotate:

res.set_xticklabels(res.get_xmajorticklabels(), fontsize = 18, rotation=45)

code complet:

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,columns=['C1','C2','C3'], index=['A','B','C'])

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')

res.invert_yaxis()

res.set_xticklabels(res.get_xmajorticklabels(), fontsize = 18)

plt.title('Seaborn heatmap - change font size')

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

Comment augmenter la taille des labels sur les axes d'une heatmap avec seaborn en python ?

3 -- Augmenter la taille des labels sur l'axe des y

Pour augmenter la taille des labels sur l'axe des y, il suffit d'ajouter la ligne suivante:

res.set_yticklabels(res.get_ymajorticklabels(), fontsize = 18)

Note: on peut aussi incliner les labels avec rotate:

res.set_yticklabels(res.get_ymajorticklabels(), fontsize = 18, rotation=45)

code complet:

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,columns=['C1','C2','C3'], index=['A','B','C'])

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')

res.invert_yaxis()

res.set_yticklabels(res.get_ymajorticklabels(), fontsize = 18)

plt.title('Seaborn heatmap - change font size')

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

Comment augmenter la taille des labels sur les axes d'une heatmap avec seaborn en python ?

4 -- Augmenter la taille de tous les labels

Note: pour augmenter tout en meme temps, on peut aussi utiliser:

sns.set(font_scale=1.4)

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,columns=['C1','C2','C3'], index=['A','B','C'])

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 - change font size')

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

Comment augmenter la taille des labels sur les axes d'une heatmap avec seaborn en python ?

5 -- 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!