Last active
August 14, 2024 22:35
-
-
Save thesamovar/52dbbb3a58a73c590d54c34f5f719bac to your computer and use it in GitHub Desktop.
Automatic scientific axes layout for matplotlib.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "%matplotlib inline\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\nfrom matplotlib import transforms", | |
"execution_count": 1, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "def panel_specs(layout, fig=None):\n # default arguments\n if fig is None:\n fig = plt.gcf()\n # format and sanity check grid\n lines = layout.split('\\n')\n lines = [line.strip() for line in lines if line.strip()]\n linewidths = set(len(line) for line in lines)\n if len(linewidths)>1:\n raise ValueError('Invalid layout (all lines must have same width)')\n width = linewidths.pop()\n height = len(lines)\n panel_letters = set(c for line in lines for c in line)-set('.')\n # find bounding boxes for each panel\n panel_grid = {}\n for letter in panel_letters:\n left = min(x for x in range(width) for y in range(height) if lines[y][x]==letter)\n right = 1+max(x for x in range(width) for y in range(height) if lines[y][x]==letter)\n top = min(y for x in range(width) for y in range(height) if lines[y][x]==letter)\n bottom = 1+max(y for x in range(width) for y in range(height) if lines[y][x]==letter)\n panel_grid[letter] = (left, right, top, bottom)\n # check that this layout is consistent, i.e. all squares are filled\n valid = all(lines[y][x]==letter for x in range(left, right) for y in range(top, bottom))\n if not valid:\n raise ValueError('Invalid layout (not all square)')\n # build axis specs\n gs = gridspec.GridSpec(ncols=width, nrows=height, figure=fig)\n specs = {}\n for letter, (left, right, top, bottom) in panel_grid.items():\n specs[letter] = gs[top:bottom, left:right]\n return specs, gs\n\ndef panels(layout, fig=None):\n # default arguments\n if fig is None:\n fig = plt.gcf()\n specs, gs = panel_specs(layout, fig=fig)\n for letter, spec in specs.items():\n axes[letter] = fig.add_subplot(spec)\n return axes, gs\n\ndef label_panel(ax, letter, *,\n offset_left=0.8, offset_up=0.2, prefix='', postfix='.', **font_kwds):\n kwds = dict(fontsize=18)\n kwds.update(font_kwds)\n # this mad looking bit of code says that we should put the code offset a certain distance in\n # inches (using the fig.dpi_scale_trans transformation) from the top left of the frame\n # (which is (0, 1) in ax.transAxes transformation space)\n fig = ax.figure\n trans = ax.transAxes + transforms.ScaledTranslation(-offset_left, offset_up, fig.dpi_scale_trans)\n ax.text(0, 1, prefix+letter+postfix, transform=trans, **kwds)\n\ndef label_panels(axes, letters=None, **kwds):\n if letters is None:\n letters = axes.keys()\n for letter in letters:\n ax = axes[letter]\n label_panel(ax, letter, **kwds)\n \nlayout = '''\n AAB\n AA.\n .CC\n '''\nfig = plt.figure(figsize=(10, 7))\naxes, spec = panels(layout, fig=fig)\nspec.set_width_ratios([1, 3, 1])\nlabel_panels(axes, letters='ABC')\nplt.tight_layout()", | |
"execution_count": 100, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<Figure size 720x504 with 3 Axes>", | |
"image/png": "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\n" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "layout = '''\n AAAB\n CDEB\n '''\nfig = plt.figure(figsize=(10, 5))\naxes, spec = panels(layout, fig=fig)\nlabel_panels(axes)\nplt.tight_layout()", | |
"execution_count": 101, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<Figure size 720x360 with 5 Axes>", | |
"image/png": "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\n" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "layout = '''\n AAAB\n AAAC\n AAAD\n '''\nN = 5\nfig = plt.figure(figsize=(8, 6))\nspecs, gs = panel_specs(layout, fig=fig)\naxes = {}\nfor letter in 'BCD':\n axes[letter] = ax = fig.add_subplot(specs[letter])\n label_panel(ax, letter)\nsubgs = specs['A'].subgridspec(N, N, wspace=0, hspace=0)\ntriaxes = {}\nfor i in range(N):\n for j in range(i+1):\n triaxes[i, j] = ax = fig.add_subplot(subgs[i, j])\n ax.set_xticks([])\n ax.set_yticks([])\n if i==N-1:\n ax.set_xlabel(chr(ord('α')+j))\n if j==0:\n ax.set_ylabel(chr(ord('α')+i))\nlabel_panel(triaxes[0, 0], 'A')\nplt.tight_layout()", | |
"execution_count": 102, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<Figure size 576x432 with 18 Axes>", | |
"image/png": "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\n" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
} | |
} | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"name": "conda-env-brian-py", | |
"display_name": "Python [conda env:brian]", | |
"language": "python" | |
}, | |
"language_info": { | |
"name": "python", | |
"version": "3.8.2", | |
"mimetype": "text/x-python", | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"pygments_lexer": "ipython3", | |
"nbconvert_exporter": "python", | |
"file_extension": ".py" | |
}, | |
"gist": { | |
"id": "52dbbb3a58a73c590d54c34f5f719bac", | |
"data": { | |
"description": "Automatic scientific axes layout for matplotlib.ipynb", | |
"public": true | |
} | |
}, | |
"_draft": { | |
"nbviewer_url": "https://gist.github.com/52dbbb3a58a73c590d54c34f5f719bac" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment