Оптимизация размера блокнота Jupyter и качества иллюстраций
Ввиду ограничений предварительного просмотра GitHub хочется, с одной
стороны, иметь сравнительно небольшие файлы записок .ipynb, а с другой
стороны, хотелось бы иметь качество получше. И всё это с минимальными
затратами.
Известные мне варианты настроек записки:
# %config InlineBackend.figure_formats = [ "retina" ] # 2,8M
# %config InlineBackend.figure_formats = [ "png2x" ] # Синоним "retina"? 2,8M
# %config InlineBackend.figure_formats = [ "svg" ] # Сохраняет PNG внутри SVG, 880K
# Эти уже, бывает, нехорошо выглядят.
# %config InlineBackend.figure_formats = [ "png" ] # По умолчанию, 868K
%config InlineBackend.figure_formats = [ "jpeg" ] # Режем для GitHub, 172K
%config InlineBackend.print_figure_kwargs = {'pil_kwargs': {'quality' : 90, \
'optimize': True}} # Влияет
Как я понимаю, на настоящий момент, matplotlib не может внутрь SVG помещать JPEG или как-то иначе сжимать SVG, по крайней мере в теле
записок (тип файла svgz в документации matplotlib упоминается,
но как его использовать в matplotlib_inline не описано).
Как кажется, вариант jpeg удвоенного разрешения, а-ля png2x,
был бы приемлем. Как бы это так сделать, что б ничего не делать?
Пример записки: https://github.com/Serge3leo/temp-cola/blob/main/ruSO/1615614-Загрузка-данных-записки/Загрузка-данных-записки.ipynb
P.S.
Паллиативный вариант обхода:
%config InlineBackend.figure_formats = [ "jpeg" ]
%config InlineBackend.print_figure_kwargs = {'pil_kwargs': {'optimize': True}}
mpl.rcParams['figure.dpi'] = 150
'figure.dpi' - увеличивает видимые размеры иллюстраций в 1,5 раза, но не более размеров окна. Что заметно улучшает качество графических пометок и т.п. {'pil_kwargs': {'optimize': True}} - дополнительно уменьшает размер JPEG, процентов на 10%.
Конечно, это совсем не 'retina', которая удваивает разрешение без изменения видимого размера.
Плюс потенциальные конфликты, поскольку mpl.rcParams относится не только к inline иллюстрациям. Но хоть что-то, хоть как-то.
Зато файл во много раз меньше. И в отведённый мегабайт для предварительного просмотра влезет десяток картинок, или около того.