Lors du traçage des cartes thermiques avec seaborn (et des matrices de corrélation avec matplotlib), la première et la dernière ligne sont coupées en deux. Cela se produit également lorsque j'exécute cet exemple de code minimal que j'ai trouvé en ligne.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.read_csv('https://raw.githubusercontent.com/resbaz/r-novice-gapminder-files/master/data/gapminder-FiveYearData.csv')
plt.figure(figsize=(10,5))
sns.heatmap(data.corr())
plt.show()
Les étiquettes sur l'axe y sont au bon endroit, mais les lignes ne sont pas complètement là.
Il y a quelques jours, cela a fonctionné comme prévu. Depuis lors, j'ai installé texlive-xetex, je l'ai donc retiré à nouveau mais cela n'a pas résolu mon problème.
Des idées sur ce qui pourrait me manquer?
Malheureusement matplotlib 3.1.1 cartes thermiques brisées; et en général des axes inversés à tiques fixes.
Ce problème est résolu dans la version de développement actuelle; vous pouvez donc
ax.set_ylim(...)
)C'est un bug dans la régression matplotlib entre 3.1.0 et 3.1.1 Vous pouvez corriger cela en:
import seaborn as sns
df_corr = someDataFrame.corr()
ax = sns.heatmap(df_corr, annot=True) #notation: "annot" not "annote"
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)
Corrigé en utilisant ce qui précède et en définissant les limites de la carte thermique manuellement.
Première
ax = sns.heatmap(...
vérifié les axes actuels avec
ax.get_ylim()
(5.5, 0.5)
Fixé avec
ax.set_ylim(6.0, 0)
matplotlib 3.1.2 est sorti - Il est disponible dans le cloud Anaconda via conda-forge mais je n'ai pas pu l'installer via conda install. L'alternative manuelle a fonctionné: Téléchargez matplotlib 3.1.2 depuis github et installez via pip
% curl https://codeload.github.com/matplotlib/matplotlib/tar.gz/v3.1.2 --output matplotlib-3.1.2.tar.gz
% pip install matplotlib-3.1.2.tar.gz
Je l'ai résolu en ajoutant cette ligne dans mon code, avec matplotlib==3.1.1
:
ax.set_ylim(sorted(ax.get_xlim(), reverse=True))
NB. La seule raison pour laquelle cela fonctionne est que l'axe des x n'est pas modifié, alors utilisez-le à vos risques et périls avec les futures versions de mpl
Cela se produit avec matplotlib version 3.1.1 comme suggéré par importanceofbeingernest
Après avoir résolu mon problème
pip install matplotlib==3.1.0
conda install matplotlib = 3.1.0
Cela a fonctionné pour moi et a déclassé matplotlib de 3.1.1 à 3.1.0 et les heatmaps ont commencé à se comporter correctement
rustyDev a raison sur conda-forge, mais je n'ai pas eu besoin de faire une installation manuelle de pip depuis un téléchargement de github. Pour moi, sur Windows, cela a fonctionné directement. Et les parcelles sont toutes de nouveau agréables.
https://anaconda.org/conda-forge/matplotlib
conda install -c conda-forge matplotlib
points facultatifs, non nécessaires pour la réponse:
Par la suite, j'ai essayé d'autres étapes, mais elles ne sont pas nécessaires: Dans l'invite de conda: la recherche de conda matplotlib --info n'a montré aucune nouvelle information de version, la plus récente était pour 3.1.1. J'ai donc essayé pip en utilisant pip install matplotlib==3.1.2
Mais pip dit "Exigence déjà satisfaite"
Puis obtenir la version selon medium.com/@rakshithvasudev/… python - import matplotlib - matplotlib.__version__
montre que 3.1.2 a été installé avec succès
Btw, j'ai eu cette erreur directement après la mise à jour de Spyder vers la version 4.0.0. L'erreur était dans un tracé d'une matrice de confusion. Cela a déjà été mentionné il y a quelques mois. stackoverflow.com/questions/57225685/… qui est déjà lié à cette question marine.