Рендеринг фигуры matplotlib в VSCode (Jupyter), например fig.savefigPython

Программы на Python
Ответить
Anonymous
 Рендеринг фигуры matplotlib в VSCode (Jupyter), например fig.savefig

Сообщение Anonymous »

Проблема
При сохранении фигуры 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')
Чтобы быстро выполнить итерацию корректировки моих фигур, я хотел бы иметь возможность запустить скрипт (или ячейку #%% в скрипте .py) и сразу увидеть новую фигуру в IDE с помощью plt.show(), а не всегда сохранять ее с помощью fig.savefig(...), что может занять некоторое время и требует закрытия и повторного открытия полученного PDF-файла для просмотра изменений. Очевидный выбор — использовать Jupyter Notebook. Однако когда рисунок отображается в блокноте, он выглядит совсем иначе, чем при сохранении. В частности, края холста в обоих случаях неодинаковы.
Очевидно, это связано с серверной частью, используемой для рендеринга. При сохранении рисунка в формате .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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»