web-dev-qa-db-ja.com

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()

And get this result (I am not allowed to embed images yet) y軸のラベルは正しい位置にありますが、行は完全にはありません。

数日前、意図したとおりに機能します。それ以来、texlive-xetexをインストールしたのでもう一度削除しましたが、問題は解決しませんでした。

私が見逃している可能性のあるアイデアはありますか?

91
Flops

残念ながらmatplotlib 3.1.1 海のヒートマップを壊した;そして概して、固定ティックを備えた反転軸。
これは現在の開発バージョンで修正されています。あなたはそれゆえに

  • matplotlib 3.1.0に戻す
  • matplotlib 3.1.2以降を使用してください
  • ヒートマップ制限を手動で設定します(ax.set_ylim(...)

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)
55
Nikhil Pakki

上記を使用してヒートマップ制限を手動で設定することで修正されました。

最初

ax = sns.heatmap(...

現在の軸を確認しました

ax.get_ylim()
(5.5, 0.5)

で修正

ax.set_ylim(6.0, 0)
16
lbarbus

matplotlib 3.1.2がリリースされました-conda-forgeを介してAnacondaクラウドで利用できますが、conda installを使用してインストールできませんでした。手動の代替案が機能しました: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
3
rustyDev

_matplotlib==3.1.1_を使用して、コードに次の行を追加することで解決しました:

ax.set_ylim(sorted(ax.get_xlim(), reverse=True))

NB。これが機能する唯一の理由は、x軸が変更されないためです。将来のmplバージョンでは自己責任で使用してください。

importanceofbeingernest によって示唆されているように、matplotlibバージョン3.1.1で発生します

次は私の問題を解決しました

pip install matplotlib==3.1.0

0

conda install matplotlib = 3.1.0

これは私のために機能し、matplotlibを3.1.1から3.1.0にダウングレードし、ヒートマップが正しく動作し始めました

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 install matplotlib==3.1.2を使用してpipを試しましたが、pipは「要件はすでに満たされています」と言っています

次に、medium.com/@ rakshithvasudev /…に従ってバージョンを取得すると、python - import matplotlib - matplotlib.__version__は3.1.2が正常にインストールされたことを示します

ところで、Spyderをv4.0.0にアップデートした直後にこのエラーが発生しました。エラーは、混同行列のプロットにありました。これは数ヶ月前にすでに言及されました。 stackoverflow.com/questions/57225685/…これは、この海の問題にすでにリンクされています。

0
Lorenz