[python] matplotlib / seaborn : 히트 맵 플롯의 절반으로 잘라낸 첫 번째 및 마지막 행

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/… 이미이 문제에 연결되어 있습니다.