Lorsque vous tracez 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 n'y sont pas complètement.
Il y a quelques jours, cela fonctionnait comme prévu. Depuis, j'ai installé texlive-xetex donc je l'ai à nouveau supprimé mais cela n'a pas résolu mon problème.
Des idées de ce que je pourrais manquer?
python
matplotlib
seaborn
Flops
la source
la source
Réponses:
Malheureusement, matplotlib 3.1.1 a cassé les cartes thermiques des marins ; et en général des axes inversés avec des graduations fixes.
Ce problème est résolu dans la version de développement actuelle; vous pouvez donc
ax.set_ylim(bottom, top) # set the ylim to bottom, top
)la source
ax = sns.heatmap(...)
, définissezax.set_ylim(...)
ce que vous voulez que vos limites soient.ax.set_ylim(0 ,7)
. En utilisant juste ax.set_ylim (7), une ligne a été réduite de moitié.C'est un bogue dans la régression matplotlib entre 3.1.0 et 3.1.1 Vous pouvez corriger cela en:
la source
bottom
être plus grand quetop
?Correction de l'utilisation de ce qui précède et de la définition manuelle des limites de la carte thermique.
Première
vérifié les axes courants avec
Fixé avec
la source
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 propres risques avec les futures versions de mpl
la source
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 à partir de github et installez via pip
la source
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Access is denied: 'c:\\users\\w-book\\anaconda3\\lib\\site-packages\\matplotlib\\backends\\_backend_agg.cp37-win_amd64.pyd' Consider using the --user option or check the permissions.
Cela arrive avec matplotlib version 3.1.1 comme suggéré par importanceofbeingernest
Suite a résolu mon problème
pip install matplotlib==3.1.0
la source
rustyDev a raison à propos de conda-forge, mais je n'ai pas eu besoin de faire une installation manuelle de pip à partir d'un téléchargement github. Pour moi, sous Windows, cela fonctionnait directement. Et les parcelles sont toutes belles à nouveau.
https://anaconda.org/conda-forge/matplotlib
points facultatifs, non nécessaires pour la réponse:
Ensuite, j'ai essayé d'autres étapes, mais elles ne sont pas nécessaires: Dans l'invite conda: recherche conda matplotlib --info n'a montré aucune nouvelle information de version, les informations les plus récentes étaient 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èsBtw, j'ai eu cette erreur directement après la mise à jour de Spyder vers la v4.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.
la source
conda installer matplotlib = 3.1.0
Cela a fonctionné pour moi et a rétrogradé matplotlib de 3.1.1 à 3.1.0 et les heatmaps ont commencé à se comporter correctement
la source
J'ai résolu ce problème avec le code suivant:
la source