matplotlib/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, поэтому удалил его снова, но это не решило мою проблему.

Есть идеи, чего мне не хватать?

Ответы

Ответ 1

К сожалению, matplotlib 3.1.1 сломал тепловые карты морского побережья; и вообще инвертированные оси с фиксированными галочками.
Это исправлено в текущей версии разработки; Вы можете, следовательно,

  • вернуться к matplotlib 3.1.0
  • ждать matplotlib 3.1.2
  • установить пределы тепловой карты вручную (ax.set_ylim(...))

Ответ 2

Исправлено с помощью вышеизложенного и установка пределов тепловой карты вручную.

Во-первых

ax = sns.heatmap(...

проверил текущие оси с помощью

ax.get_ylim()
(5.5, 0.5)

Исправлено с помощью

ax.set_ylim(6.0, 0)

Ответ 3

Это ошибка в регрессии matplotlib между 3.1.0 и 3.1.1 Вы можете исправить это следующим образом:

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)