Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?

Published: 13 avril 2020

DMCA.com Protection Status

Exemple de comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python

Tracer une figure réalisée avec heatmap

Exemple de comment tracer une heatmap avec seaborn

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

res.invert_yaxis()

plt.title('Seaborn heatmap - with frame')

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

Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?
Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?

Ajouter une bordure à la figure

Pour ajouter une bordure sur le contour de la figure uniquement , une solution est d'ajouter les lignes suivantes:

for _, spine in res.spines.items():
    spine.set_visible(True)

ce qui donne

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

res.invert_yaxis()

# make frame visible
for _, spine in res.spines.items():
    spine.set_visible(True)

plt.title('Seaborn heatmap - with frame')

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

Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?
Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?

Ajouter une bordure aux cellules

Autre option est d'ajouter les arguments linewidths=0.1 et linecolor='gray' dans la fonction heatmap:

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

res.invert_yaxis()

plt.title('Seaborn heatmap - with frame')

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

ce qui donne

Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?
Comment ajouter une bordure dans une figure réalisée avec heatmap de seaborn en python ?

Références

Liens Site
seaborn heatmap with frames stackoverflow
seaborn.heatmap seaborn doc
Image

of