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