web-dev-qa-db-fra.com

Une barre de couleurs pour les cartes thermiques de mer dans la sous-intrigue

Voici un exemple qui montre une barre de couleur pour chaque sous-intrigue:

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

df = pd.DataFrame(np.random.random((10,10,)))

fig,axn = plt.subplots(2, 2, sharex=True, sharey=True)

for ax in axn.flat:
    sns.heatmap(df, ax=ax)

enter image description here

Comment supprimer les barres de couleur de chaque sous-tracé? J'aimerais avoir une seule barre de couleur orientée verticalement ou horizontalement. Je sais que j'ai accès à chaque axe de la barre de couleurs via fig.get_axes()[:-4], mais comment puis-je les supprimer entièrement de l'intrigue? Je ne pense pas qu'il existe une option pour désactiver le dessin de la barre de couleurs lors de l'appel de la carte thermique.

23
pbreach

Le paramètre cbar contrôle si une barre de couleur doit être ajoutée, et le paramètre cbar_ax Peut éventuellement spécifier les axes où la barre de couleur doit aller. Donc, vous pourriez faire:

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

df = pd.DataFrame(np.random.random((10,10,)))

fig, axn = plt.subplots(2, 2, sharex=True, sharey=True)
cbar_ax = fig.add_axes([.91, .3, .03, .4])

for i, ax in enumerate(axn.flat):
    sns.heatmap(df, ax=ax,
                cbar=i == 0,
                vmin=0, vmax=1,
                cbar_ax=None if i else cbar_ax)

fig.tight_layout(rect=[0, 0, .9, 1])

(Vous obtiendrez un avertissement concernant tight_layout Ici, mais c'est en fait correct parce que nous avons placé cbar_ax Explicitement. Si vous n'aimez pas voir l'avertissement, vous pouvez également appeler tight_layout avant de comploter, mais ce ne sera pas aussi serré).

43
mwaskom