Al trazar mapas de calor con seaborn (y matrices de correlación con matplotlib), la primera y la última fila se cortan por la mitad. Esto sucede también cuando ejecuto este ejemplo de código mínimo que encontré en línea.
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()
Las etiquetas en el eje y están en el lugar correcto, pero las filas no están completamente allí.
Hace unos días, funcionó según lo previsto. Desde entonces, instalé texlive-xetex, así que lo eliminé de nuevo, pero no resolvió mi problema.
¿Alguna idea de lo que podría estar perdiendo?
python
matplotlib
seaborn
Fracasos
fuente
fuente
Respuestas:
Desafortunadamente, matplotlib 3.1.1 rompió los mapas de calor de seaborn ; y en general ejes invertidos con ticks fijos.
Esto está arreglado en la versión de desarrollo actual; puedes por lo tanto
ax.set_ylim(bottom, top) # set the ylim to bottom, top
)fuente
ax = sns.heatmap(...)
, establezcaax.set_ylim(...)
lo que necesite que sean sus límites.ax.set_ylim(0 ,7)
. Usando solo ax.set_ylim (7) dejó una fila a la mitad.Es un error en la regresión de matplotlib entre 3.1.0 y 3.1.1 Puede corregir esto de la siguiente manera:
fuente
bottom
ser más grande quetop
?Se corrigió usando lo anterior y estableciendo los límites del mapa de calor manualmente.
primero
comprobado los ejes actuales con
Fijo con
fuente
Lo resolví agregando esta línea en mi código, con
matplotlib==3.1.1
:ax.set_ylim(sorted(ax.get_xlim(), reverse=True))
NÓTESE BIEN. La única razón por la que esto funciona es porque el eje x no cambia, así que úselo bajo su propio riesgo con futuras versiones de mpl.
fuente
matplotlib 3.1.2 está disponible: está disponible en la nube de Anaconda a través de conda-forge, pero no pude instalarlo a través de conda install. La alternativa manual funcionó: descargue matplotlib 3.1.2 desde github e instálelo a través de pip
fuente
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.
Sucede con la versión 3.1.1 de matplotlib como sugiere la importancia de beingernest
Seguir resolvió mi problema
pip install matplotlib==3.1.0
fuente
rustyDev tiene razón sobre conda-forge, pero no necesitaba hacer una instalación manual de pip desde una descarga de github. Para mí, en Windows, funcionó directamente. Y las parcelas vuelven a ser bonitas.
https://anaconda.org/conda-forge/matplotlib
puntos opcionales, no necesarios para la respuesta:
Luego, probé otros pasos, pero no son necesarios: En el indicador de conda: conda search matplotlib --info no mostró información de nueva versión, la información más reciente fue para 3.1.1. Por lo tanto, probé pip usando
pip install matplotlib==3.1.2
Pero pip dice "Requisito ya satisfecho"Luego, obtener la versión de acuerdo con medium.com/@rakshithvasudev/…
python - import matplotlib - matplotlib.__version__
muestra que 3.1.2 se instaló correctamentePor cierto, tuve este error directamente después de actualizar Spyder a v4.0.0. El error estaba en un diagrama de una matriz de confusión. Esto ya se mencionó hace algunos meses. stackoverflow.com/questions/57225685/… que ya está vinculado a esta pregunta nacida del mar.
fuente
conda install matplotlib = 3.1.0
Esto funcionó para mí y degradó matplotlib de 3.1.1 a 3.1.0 y los mapas de calor comenzaron a comportarse correctamente
fuente
Resolví este problema con el siguiente código:
fuente