3 votes

La carte thermique Seaborn continue d'ajouter des barres de couleur en boucle sur les ensembles de données

J'essaie de tracer des cartes thermiques en boucle sur différents ensembles de données, mais à chaque nouvelle carte thermique, une nouvelle barre de couleur est ajoutée (la carte semble correcte et aucune carte supplémentaire n'est ajoutée). Je pourrais utiliser une solution de contournement en réinitialisant la barre de couleur dans la boucle, mais je préférerais savoir ce qui se passe et avoir une solution plus propre. Merci d'avance pour toute aide !

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

# read file
atlas = ['A','B','C','D']
output_path = '/Users/polo/Desktop/Heatmaps/'

for at in range(len(atlas)):
    data = pd.read_csv('/Users/polo/Desktop/correl_input_{}.csv'.format(atlas[at]))
    hmap = sns.heatmap(data,cmap='seismic',linewidths=.5,vmin=-0.1, vmax=0.1)
    hmap.set_ylim(0, 5)
    plt.savefig(output_path + 'Heatmap_{}.png'.format(atlas[at]), dpi=1200,bbox_inches='tight')
    #plt.savefig('{}_plot.png', format='png', dpi=1200,bbox_inches='tight')

1voto

Josh Friedlander Points 3255

TL;DR votre solution de plt.figure() est le bon, comme suggéré aquí .

Construit au-dessus de matplotlib, seaborn utilise les concepts de figures et d'axes. La façon canonique de créer un matplotlib.pyplot Le graphique commence par l'instanciation d'une figure et d'axes avec f, ax = plt.subplots() . Lorsque vous appelez un graphique au niveau des axes, tel que heatmap , les appels de mer matplotlib.pyplot.gca() qui récupère les axes actuels. S'il n'existe pas, seaborn en instancie un nouveau sous le capot.

Je suppose que dans votre boucle les cartes thermiques se couvrent les unes les autres, mais que seaborn ajuste dynamiquement la figure pour laisser de l'espace pour chaque barre de couleur. Effacer la figure avec plt.figure() (ou f, ax = plt.subplots() ) est ce que vous voulez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X