Тепловая карта matplotlib и seaborn визуализируется по-разному в Jupyter для сохранения (метки обрезаны)

1

Используя Jupyter 4.4.0 и Python 3.6.5 (Anaconda), я генерирую тепловую карту следующим образом:

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt

# generate a 9x4 matrix of random values and long labels
x,y = 9,4
plt.figure(figsize=(x,y))
scores = np.random.random((y, x))
cols = ['looooooooooong_label_x_%d' % i for i in range(x)]
rows = ['looooooooooong_label_y_%d' % i for i in reversed(range(y))]

# generate a heatmap using seaborn with rotated labels
ax = sns.heatmap(pd.DataFrame(scores, columns=cols, index=rows), annot=True, square=True, cbar=False,  cmap='YlGnBu', xticklabels=True, yticklabels=True)
ax.set_yticklabels(ax.get_yticklabels(), rotation=0, fontsize=8)
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, fontsize=8, rotation_mode='anchor', ha='right')

В записной книжке Jupyter автоматически отображает это изображение, как показано:

Изображение 174551

Это выглядит так, как я хочу. Однако, когда я делаю следующий шаг и сохраняю сюжет в файл:

ax.figure.savefig('hmx.png')

Этот файл выглядит как:

Изображение 174551

Различия выглядят так:

  • Сохраненное изображение смещается вниз и влево, отсекая метки;
  • Представленный в Jupyter PNG имеет прозрачный фон, а сохраненное изображение не имеет (оно имеет белый фон).

Я хотел бы знать, как сохранить изображение, сгенерированное Jupyter, в файл или, еще лучше, то, что я делаю неправильно, когда я пытаюсь самостоятельно сохранить PNG.

Теги:
matplotlib
jupyter-notebook
heatmap
seaborn

1 ответ

1
Лучший ответ

Исправлена!

ax.figure.savefig('hmx.png', transparent=True, bbox_inches='tight')

Теперь результат соответствует тому, что генерируется Jupyter: прозрачный и правильно выровненный без каких-либо обрезанных ярлыков:

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню