From 9390396c7a775576a83278807cca7dbd1195793a Mon Sep 17 00:00:00 2001 From: "Serguei E. Leontiev" Date: Sun, 19 Oct 2025 07:42:00 +0300 Subject: [PATCH 1/4] Docstring of set_matplotlib_formats --- matplotlib_inline/backend_inline.py | 13 +- tests/notebooks/config_InlineBackend.ipynb | 190 +++++++++++++++++++++ 2 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 tests/notebooks/config_InlineBackend.ipynb diff --git a/matplotlib_inline/backend_inline.py b/matplotlib_inline/backend_inline.py index 0a757b5..26cc44d 100644 --- a/matplotlib_inline/backend_inline.py +++ b/matplotlib_inline/backend_inline.py @@ -275,7 +275,14 @@ def set_matplotlib_formats(*formats, **kwargs): For example, this enables PNG and JPEG output with a JPEG quality of 90%:: - In [1]: set_matplotlib_formats('png', 'jpeg', quality=90) + In [1]: set_matplotlib_formats('png', 'jpeg', + pil_kwargs={'quality': 90}) + + To set this in your notebook by `%config` magic:: + + In [1]: %config InlineBackend.figure_formats = {'png', 'jpeg'} + %config InlineBackend.print_figure_kwargs = \\ + {'pil_kwargs': {'quality' : 90}} To set this in your config files use the following:: @@ -288,6 +295,10 @@ def set_matplotlib_formats(*formats, **kwargs): One or more figure formats to enable: 'png', 'retina', 'jpeg', 'svg', 'pdf'. **kwargs Keyword args will be relayed to ``figure.canvas.print_figure``. + + In addition, see the docstrings of `plt.savefig()`, + `matplotlib.figure.Figure.savefig()`, `PIL.Image.Image.save()` and + https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html """ # build kwargs, starting with InlineBackend config cfg = InlineBackend.instance() diff --git a/tests/notebooks/config_InlineBackend.ipynb b/tests/notebooks/config_InlineBackend.ipynb new file mode 100644 index 0000000..0824890 --- /dev/null +++ b/tests/notebooks/config_InlineBackend.ipynb @@ -0,0 +1,190 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e4221445-5518-4984-b731-aaf9840141d8", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%config InlineBackend.figure_formats = 'jpeg'\n", + "%config InlineBackend.print_figure_kwargs = \\\n", + " {'bbox_inches': None, \\\n", + " 'pil_kwargs': {'quality' : 90, \\\n", + " 'optimize': True}}\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib_inline.backend_inline import set_matplotlib_formats\n", + "from pprint import pprint\n", + "from traitlets.config import get_config" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0e5b8951-19af-4273-80ca-23b47476d637", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function set_matplotlib_formats in module matplotlib_inline.backend_inline:\n", + "\n", + "set_matplotlib_formats(*formats, **kwargs)\n", + " Select figure formats for the inline backend. Optionally pass quality for JPEG.\n", + "\n", + " For example, this enables PNG and JPEG output with a JPEG quality of 90%::\n", + "\n", + " In [1]: set_matplotlib_formats('png', 'jpeg',\n", + " pil_kwargs={'quality': 90})\n", + "\n", + " To set this in your notebook by `%config` magic::\n", + "\n", + " In [1]: %config InlineBackend.figure_formats = {'png', 'jpeg'}\n", + " %config InlineBackend.print_figure_kwargs = \\\n", + " {'pil_kwargs': {'quality' : 90}}\n", + "\n", + " To set this in your config files use the following::\n", + "\n", + " c.InlineBackend.figure_formats = {'png', 'jpeg'}\n", + " c.InlineBackend.print_figure_kwargs.update({'quality' : 90})\n", + "\n", + " Parameters\n", + " ----------\n", + " *formats : strs\n", + " One or more figure formats to enable: 'png', 'retina', 'jpeg', 'svg', 'pdf'.\n", + " **kwargs\n", + " Keyword args will be relayed to ``figure.canvas.print_figure``.\n", + "\n", + " In addition, see the docstrings of `plt.savefig()`,\n", + " `matplotlib.figure.Figure.savefig()`, `PIL.Image.Image.save()` and\n", + " https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html\n", + "\n" + ] + } + ], + "source": [ + "help(set_matplotlib_formats)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "89f6de76-9d6b-43c0-b790-e6b63c4c4159", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.plot([1, 3, 2, 4])\n", + "ax.plot([2.5, 0.5, 3.5, 1.5])\n", + "None" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1fc45e92-07c2-49fa-9b3e-2c30e865e5e8", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "
" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set_matplotlib_formats('jpeg', bbox_inches='tight',\n", + " pil_kwargs={'quality': 25})\n", + "fig" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df3590be-d87d-4c37-8f73-c652eec9a640", + "metadata": { + "editable": true, + "nbreg": { + "diff_ignore": [ + "/outputs/*/text/plain" + ] + }, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# WARNING: clear cell output, before test and/or commit.\n", + "# For demonstration purposes only, the Inline Back-end\n", + "# configuration does not change.\n", + "\n", + "c = get_config()\n", + "c.InlineBackend.figure_formats = {'png', 'jpeg'}\n", + "c.InlineBackend.print_figure_kwargs.update({\n", + " 'pil_kwargs': {'quality' : 99}\n", + " })\n", + "c" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From c91c036723dd58a37c0f46a6662a9a837d611553 Mon Sep 17 00:00:00 2001 From: "Serguei E. Leontiev" Date: Sun, 19 Oct 2025 08:49:46 +0300 Subject: [PATCH 2/4] Correcting for docstring of set_matplotlib_formats --- matplotlib_inline/backend_inline.py | 4 +++- tests/notebooks/config_InlineBackend.ipynb | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/matplotlib_inline/backend_inline.py b/matplotlib_inline/backend_inline.py index 26cc44d..5c3d319 100644 --- a/matplotlib_inline/backend_inline.py +++ b/matplotlib_inline/backend_inline.py @@ -287,7 +287,9 @@ def set_matplotlib_formats(*formats, **kwargs): To set this in your config files use the following:: c.InlineBackend.figure_formats = {'png', 'jpeg'} - c.InlineBackend.print_figure_kwargs.update({'quality' : 90}) + c.InlineBackend.print_figure_kwargs.update({ + 'pil_kwargs': {'quality' : 90} + }) Parameters ---------- diff --git a/tests/notebooks/config_InlineBackend.ipynb b/tests/notebooks/config_InlineBackend.ipynb index 0824890..c2c00cf 100644 --- a/tests/notebooks/config_InlineBackend.ipynb +++ b/tests/notebooks/config_InlineBackend.ipynb @@ -55,7 +55,9 @@ " To set this in your config files use the following::\n", "\n", " c.InlineBackend.figure_formats = {'png', 'jpeg'}\n", - " c.InlineBackend.print_figure_kwargs.update({'quality' : 90})\n", + " c.InlineBackend.print_figure_kwargs.update({\n", + " 'pil_kwargs': {'quality' : 90}\n", + " })\n", "\n", " Parameters\n", " ----------\n", From 45ec4f11963f34ef6fe92298cc691eea569d62f5 Mon Sep 17 00:00:00 2001 From: "Serguei E. Leontiev" Date: Tue, 21 Oct 2025 23:51:50 +0300 Subject: [PATCH 3/4] Correcting by Carreau reviewe --- matplotlib_inline/backend_inline.py | 2 +- tests/notebooks/config_InlineBackend.ipynb | 85 ++++++++++------------ 2 files changed, 39 insertions(+), 48 deletions(-) diff --git a/matplotlib_inline/backend_inline.py b/matplotlib_inline/backend_inline.py index 5c3d319..a798c56 100644 --- a/matplotlib_inline/backend_inline.py +++ b/matplotlib_inline/backend_inline.py @@ -300,7 +300,7 @@ def set_matplotlib_formats(*formats, **kwargs): In addition, see the docstrings of `plt.savefig()`, `matplotlib.figure.Figure.savefig()`, `PIL.Image.Image.save()` and - https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html + :ref:`Pillow Image file formats `. """ # build kwargs, starting with InlineBackend config cfg = InlineBackend.instance() diff --git a/tests/notebooks/config_InlineBackend.ipynb b/tests/notebooks/config_InlineBackend.ipynb index c2c00cf..1e31428 100644 --- a/tests/notebooks/config_InlineBackend.ipynb +++ b/tests/notebooks/config_InlineBackend.ipynb @@ -3,11 +3,21 @@ { "cell_type": "code", "execution_count": 1, + "id": "c235d5cb-9181-4579-855c-b7da77261bd7", + "metadata": {}, + "outputs": [], + "source": [ + "#NBVAL_IGNORE_OUTPUT\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "e4221445-5518-4984-b731-aaf9840141d8", "metadata": {}, "outputs": [], "source": [ - "%matplotlib inline\n", "%config InlineBackend.figure_formats = 'jpeg'\n", "%config InlineBackend.print_figure_kwargs = \\\n", " {'bbox_inches': None, \\\n", @@ -16,21 +26,14 @@ "\n", "import matplotlib.pyplot as plt\n", "from matplotlib_inline.backend_inline import set_matplotlib_formats\n", - "from pprint import pprint\n", "from traitlets.config import get_config" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "0e5b8951-19af-4273-80ca-23b47476d637", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -68,26 +71,21 @@ "\n", " In addition, see the docstrings of `plt.savefig()`,\n", " `matplotlib.figure.Figure.savefig()`, `PIL.Image.Image.save()` and\n", - " https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html\n", + " :ref:`Pillow Image file formats `.\n", "\n" ] } ], "source": [ + "#NBVAL_IGNORE_OUTPUT\n", "help(set_matplotlib_formats)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "89f6de76-9d6b-43c0-b790-e6b63c4c4159", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, + "metadata": {}, "outputs": [ { "data": { @@ -109,15 +107,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "1fc45e92-07c2-49fa-9b3e-2c30e865e5e8", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, + "metadata": {}, "outputs": [ { "data": { @@ -126,7 +118,7 @@ "
" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -139,30 +131,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "df3590be-d87d-4c37-8f73-c652eec9a640", - "metadata": { - "editable": true, - "nbreg": { - "diff_ignore": [ - "/outputs/*/text/plain" - ] - }, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'IPKernelApp': {'connection_file': '/Users/leo/Library/Jupyter/runtime/kernel-488a2b06-f50e-4bf3-98b5-f46e505f928c.json'},\n", + " 'InlineBackend': {'figure_formats': {'jpeg', 'png'},\n", + " 'print_figure_kwargs': {'bbox_inches': None, 'pil_kwargs': {'quality': 90}}}}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# WARNING: clear cell output, before test and/or commit.\n", - "# For demonstration purposes only, the Inline Back-end\n", - "# configuration does not change.\n", - "\n", + "#NBVAL_IGNORE_OUTPUT\n", "c = get_config()\n", "c.InlineBackend.figure_formats = {'png', 'jpeg'}\n", "c.InlineBackend.print_figure_kwargs.update({\n", - " 'pil_kwargs': {'quality' : 99}\n", + " 'pil_kwargs': {'quality' : 90}\n", " })\n", "c" ] From 20f78c4483350eb8fcd71d7a29d91a061ed284ab Mon Sep 17 00:00:00 2001 From: "Serguei E. Leontiev" Date: Thu, 23 Oct 2025 07:38:03 +0300 Subject: [PATCH 4/4] Help string of %config InlineBackend --- matplotlib_inline/config.py | 3 +- tests/notebooks/config_InlineBackend.ipynb | 66 ++++++++++++++++++++-- 2 files changed, 62 insertions(+), 7 deletions(-) diff --git a/matplotlib_inline/config.py b/matplotlib_inline/config.py index 0838040..ce9be03 100644 --- a/matplotlib_inline/config.py +++ b/matplotlib_inline/config.py @@ -79,7 +79,8 @@ def _figure_format_changed(self, name, old, new): {"bbox_inches": "tight"}, help="""Extra kwargs to be passed to fig.canvas.print_figure. - Logical examples include: bbox_inches, quality (for jpeg figures), etc. + Logical examples include: bbox_inches, pil_kwargs, etc. In addition, + see the docstrings of `set_matplotlib_formats`. """, ).tag(config=True) _print_figure_kwargs_changed = _update_figure_formatters diff --git a/tests/notebooks/config_InlineBackend.ipynb b/tests/notebooks/config_InlineBackend.ipynb index 1e31428..fd32837 100644 --- a/tests/notebooks/config_InlineBackend.ipynb +++ b/tests/notebooks/config_InlineBackend.ipynb @@ -32,6 +32,60 @@ { "cell_type": "code", "execution_count": 3, + "id": "fbec64f3-9f8e-435f-8a92-8d9ba7c0beb7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "InlineBackend(InlineBackendConfig) options\n", + "----------------------------------------\n", + "InlineBackend.close_figures=\n", + " Close all figures at the end of each cell.\n", + " When True, ensures that each cell starts with no active figures, but it\n", + " also means that one must keep track of references in order to edit or\n", + " redraw figures in subsequent cells. This mode is ideal for the notebook,\n", + " where residual plots from other cells might be surprising.\n", + " When False, one must call figure() to create new figures. This means\n", + " that gcf() and getfigs() can reference figures created in other cells,\n", + " and the active figure can continue to be edited with pylab/pyplot\n", + " methods that reference the current active figure. This mode facilitates\n", + " iterative editing of figures, and behaves most consistently with\n", + " other matplotlib backends, but figure barriers between cells must\n", + " be explicit.\n", + " Current: True\n", + "InlineBackend.figure_format=\n", + " The figure format to enable (deprecated\n", + " use `figure_formats` instead)\n", + " Current: ''\n", + "InlineBackend.figure_formats=...\n", + " A set of figure formats to enable: 'png',\n", + " 'retina', 'jpeg', 'svg', 'pdf'.\n", + " Current: {'jpeg'}\n", + "InlineBackend.print_figure_kwargs==...\n", + " Extra kwargs to be passed to fig.canvas.print_figure.\n", + " Logical examples include: bbox_inches, pil_kwargs, etc. In addition,\n", + " see the docstrings of `set_matplotlib_formats`.\n", + " Current: {'bbox_inches': None, 'pil_kwargs': {'quality': 90, 'optimize': True}}\n", + "InlineBackend.rc==...\n", + " Dict to manage matplotlib configuration defaults in the inline\n", + " backend. As of v0.1.4 IPython/Jupyter do not override defaults out of\n", + " the box, but third-party tools may use it to manage rc data. To change\n", + " personal defaults for matplotlib, use matplotlib's configuration\n", + " tools, or customize this class in your `ipython_config.py` file for\n", + " IPython/Jupyter-specific usage.\n", + " Current: {}\n" + ] + } + ], + "source": [ + "%config InlineBackend" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "id": "0e5b8951-19af-4273-80ca-23b47476d637", "metadata": {}, "outputs": [ @@ -83,7 +137,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "89f6de76-9d6b-43c0-b790-e6b63c4c4159", "metadata": {}, "outputs": [ @@ -107,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "1fc45e92-07c2-49fa-9b3e-2c30e865e5e8", "metadata": {}, "outputs": [ @@ -118,7 +172,7 @@ "
" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -131,19 +185,19 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "df3590be-d87d-4c37-8f73-c652eec9a640", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'IPKernelApp': {'connection_file': '/Users/leo/Library/Jupyter/runtime/kernel-488a2b06-f50e-4bf3-98b5-f46e505f928c.json'},\n", + "{'IPKernelApp': {'connection_file': '/Users/leo/Library/Jupyter/runtime/kernel-66b85c75-26bd-4e95-91ec-25b40babd080.json'},\n", " 'InlineBackend': {'figure_formats': {'jpeg', 'png'},\n", " 'print_figure_kwargs': {'bbox_inches': None, 'pil_kwargs': {'quality': 90}}}}" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }