seaborn (및 matplotlib를 사용한 상관 행렬)을 사용하여 히트 맵을 플로팅 할 때 첫 번째 행과 마지막 행이 절반으로 잘립니다. 이것은 내가 온라인에서 찾은이 최소한의 코드 예제를 실행할 때도 발생합니다.
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()
y 축의 레이블은 올바른 지점에 있지만 행이 완전히있는 것은 아닙니다.
며칠 전에 의도 한대로 작동했습니다. 그 이후로 texlive-xetex를 설치했기 때문에 다시 제거했지만 문제가 해결되지 않았습니다.
내가 놓칠 수있는 아이디어가 있습니까?
답변
불행히도 matplotlib 3.1.1 은 seaborn 히트 맵을 깨뜨 렸습니다 . 일반적으로 고정 된 눈금이있는 반전 된 축.
이것은 현재 개발 버전에서 수정되었습니다. 따라서 당신은
- matplotlib 3.1.0으로 되돌리기
- matplotlib 3.1.2 이상 사용
- 히트 맵 제한을 수동으로 설정 (
ax.set_ylim(bottom, top) # set the ylim to bottom, top
)
답변
3.1.0과 3.1.1 사이의 matplotlib 회귀에있는 버그입니다. 다음과 같이 수정할 수 있습니다.
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)
답변
위의 방법을 사용하고 히트 맵 제한을 수동으로 설정하는 문제를 해결했습니다.
먼저
ax = sns.heatmap(...
현재 축을 확인했습니다.
ax.get_ylim()
(5.5, 0.5)
고정
ax.set_ylim(6.0, 0)
답변
내 코드에 다음 줄을 추가하여 해결했습니다 matplotlib==3.1.1
.
ax.set_ylim(sorted(ax.get_xlim(), reverse=True))
NB. 이것이 작동하는 유일한 이유는 x 축이 변경되지 않았기 때문에 향후 mpl 버전에서 자신의 책임하에 사용하십시오.
답변
matplotlib 3.1.2가 나왔습니다-conda-forge를 통해 Anaconda 클라우드에서 사용할 수 있지만 conda 설치를 통해 설치할 수 없었습니다. 수동 대안이 작동했습니다. github에서 matplotlib 3.1.2를 다운로드하고 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
답변
Importantofbeingernest에서 제안한대로 matplotlib 버전 3.1.1에서 발생 합니다.
다음은 내 문제를 해결했습니다.
pip install matplotlib==3.1.0
답변
rustyDev는 conda-forge에 대해 맞지만 github 다운로드에서 수동 pip 설치를 할 필요가 없었습니다. 저에게는 Windows에서 직접 작동했습니다. 그리고 플롯은 다시 모두 멋집니다.
https://anaconda.org/conda-forge/matplotlib
conda install -c conda-forge matplotlib
답변에 필요하지 않은 선택적 포인트 :
그 후 다른 단계를 시도했지만 필요하지 않습니다. conda 프롬프트에서 : conda search matplotlib –info에 새 버전 정보가 표시되지 않았으며 최신 정보는 3.1.1에 대한 것입니다. 따라서 pip를 사용하여 시도했지만 pip pip install matplotlib==3.1.2
는 “요구 사항이 이미 충족되었습니다”라고 말합니다.
그런 다음 medium.com/@rakshithvasudev/…에 따라 버전을 가져 오면 python - import matplotlib - matplotlib.__version__
3.1.2가 성공적으로 설치 되었음을 보여줍니다.
Btw, Spyder를 v4.0.0으로 업데이트 한 직후이 오류가 발생했습니다. 오류는 혼동 행렬의 플롯에 있습니다. 이것은 이미 몇 달 전에 언급되었습니다. stackoverflow.com/questions/57225685/… 이미이 문제에 연결되어 있습니다.