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()
Метки на оси 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)