При сохранении фигуры matplotlib с помощью fig.savefig() фигура выглядит иначе, чем когда фигура отображается в Jupyter Notebook.
Вопрос
Как я могу визуализировать статическую (неинтерактивную) фигуру в Jupyter Notebook, чтобы она выглядела точно так же, как я бы увидел, когда сохранение фигуры с помощью `fig.savefig('example.pdf')?
Контекст
Когда я создаю фигуру с помощью matplotlib, я тщательно корректирую размер и расстояние между всеми элементами, а затем сохраняю ее с помощью fig.savefig('example.pdf') без каких-либо неконтролируемых корректировок (т.е. Pad_inches=0 и bbox_inches='tight'). Это гарантирует, что все элементы, в частности текст, имеют правильный размер. Простой пример:
Код: Выделить всё
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(1,1))
ax.plot(WHATEVER)
# Do some fine adjustments as needed
fig.subplots_adjust(left=0.15, right=0.8, bottom=0.1, top=0.95, wspace=0.1, hspace=0.1)
fig.savefig('my_fig.pdf')
Очевидно, это связано с серверной частью, используемой для рендеринга. При сохранении рисунка в формате .pdf используется серверная часть pdf. Напротив, в блокноте используется встроенный бэкэнд.
Ранее я использовал функцию SciView в PyCharm. Это визуализирует и отображает фигуру, когда plt.show() вызывается как png. Я не уверен, какой бэкенд matplotlib он использует, но вывод выглядит идентично тому, что сохраняется с помощью fig.savefig.
Предыдущий вопрос
Несколько предыдущих вопросов говорят о несоответствии между выводом, полученным при использовании plt.show() и plt.savefig(). Однако в основном они касаются изменения вывода plt.savefig(), чтобы он соответствовал тому, что видно с помощью plt.show().
Различия между сохраненным и отображаемым рисунком
Почему matplotlib отображает график в блокноте Jupyter по-другому, чем при экспорте в PDF
Подробнее здесь: https://stackoverflow.com/questions/798 ... ig-savefig
Мобильная версия