Podczas kreślenia map ciepła z porostem morskim (i macierzami korelacji z matplotlib) pierwszy i ostatni wiersz przecina się na pół. Dzieje się tak również, gdy uruchamiam ten minimalny przykład kodu, który znalazłem w Internecie.
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()
Etykiety na osi y znajdują się we właściwym miejscu, ale rzędy nie są tam całkowicie.
Kilka dni temu działało zgodnie z przeznaczeniem. Od tego czasu zainstalowałem texlive-xetex, więc ponownie go usunąłem, ale nie rozwiązało to mojego problemu.
Jakieś pomysły, czego mógłbym brakować?
python
matplotlib
seaborn
Flops
źródło
źródło
Odpowiedzi:
Niestety matplotlib 3.1.1 zepsuł mapy cieplne dotyczące dna morskiego ; i ogólnie odwrócone osie ze stałymi znacznikami.
Zostało to naprawione w bieżącej wersji rozwojowej; możesz stąd
ax.set_ylim(bottom, top) # set the ylim to bottom, top
)źródło
ax = sns.heatmap(...)
, ustaw tak,ax.set_ylim(...)
jak chcesz.ax.set_ylim(0 ,7)
. Używając tylko ax.set_ylim (7), jeden wiersz został zmniejszony o połowę.Jest to błąd w regresji matplotlib między 3.1.0 a 3.1.1 Możesz to naprawić przez:
źródło
bottom
być większy niżtop
?Naprawiono korzystanie z powyższego i ręczne ustawianie limitów mapy cieplnej.
Pierwszy
sprawdził aktualne osie za pomocą
Naprawiono za pomocą
źródło
Rozwiązałem to, dodając tę linię w moim kodzie, z
matplotlib==3.1.1
:ax.set_ylim(sorted(ax.get_xlim(), reverse=True))
NB. Jedynym powodem, dla którego to działa, jest to, że oś X nie jest zmieniona, więc używaj na własne ryzyko z przyszłymi wersjami mpl
źródło
Matplotlib 3.1.2 jest niedostępny - jest dostępny w chmurze Anaconda przez conda-forge, ale nie udało mi się go zainstalować przez conda install. Ręczna alternatywa zadziałała: Pobierz matplotlib 3.1.2 z github i zainstaluj przez pip
źródło
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.
Zdarza się, ze matplotlib wersji 3.1.1 jak sugeruje importanceofbeingernest
Następujące rozwiązało mój problem
pip install matplotlib==3.1.0
źródło
rustyDev ma rację co do Conda-Forge, ale nie musiałem wykonywać ręcznej instalacji pip z Githuba. U mnie w systemie Windows działało bezpośrednio. I znowu wszystko jest ładne.
https://anaconda.org/conda-forge/matplotlib
punkty opcjonalne, niepotrzebne do odpowiedzi:
Potem wypróbowałem inne kroki, ale nie są one potrzebne: W zachęcie conda: wyszukiwanie conda matplotlib --info nie pokazało żadnych informacji o nowej wersji, najnowsze informacje dotyczyły wersji 3.1.1. Dlatego próbowałem użyć pip,
pip install matplotlib==3.1.2
ale pip mówi: „Wymaganie już spełnione”Uzyskanie wersji zgodnej z medium.com/@rakshithvasudev/…
python - import matplotlib - matplotlib.__version__
pokazuje, że 3.1.2 został pomyślnie zainstalowanyPrzy okazji, miałem ten błąd bezpośrednio po aktualizacji Spydera do wersji 4.0.0. Błąd tkwił w wykresie macierzy pomyłki. Wspomniano o tym już kilka miesięcy temu. stackoverflow.com/questions/57225685/…, który jest już powiązany z tym pytaniem dotyczącym gatunku morskiego.
źródło
conda install matplotlib = 3.1.0
To zadziałało dla mnie i obniżyłem matplotlib z 3.1.1 do 3.1.0, a mapy popularności zaczęły zachowywać się poprawnie
źródło
Rozwiązałem ten problem za pomocą następującego kodu:
źródło