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", | |
"execution_count": 21, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "from collections import namedtuple\ndef make_panelled_axes(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)\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 axes\n axes = {}\n spec = gridspec.GridSpec(ncols=width, nrows=height, figure=fig)\n for letter, (left, right, top, bottom) in panel_grid.items():\n axes[letter] = fig.add_subplot(spec[top:bottom, left:right])\n return axes, spec\n\ndef label_panels(axes, letters=None, *, prefix='', postfix='.', spaces=6, pad=10, fontsize=18):\n if letters is None:\n letters = axes.keys()\n for letter in letters:\n ax = axes[letter]\n ax.set_title(prefix+letter+postfix+' '*spaces, loc='left', pad=pad,\n fontdict={'horizontalalignment': 'right',\n 'fontsize': fontsize})\n \nlayout = '''\n AAB\n AAx\n CDD\n '''\nfig = plt.figure(figsize=(10, 7))\naxes, spec = make_panelled_axes(layout, fig=fig)\nspec.set_width_ratios([1, 3, 1])\nlabel_panels(axes, letters='ABCD')\nplt.tight_layout()", | |
"execution_count": 56, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAHwCAYAAAC7apkrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3df5Bd5Z3n9/cnEmzG+AeUaXs8EvZovAIsJ+BAgz1b4x15HBsJJ6XxDlsl4TFrgqMwY1xONqlAbTL2Jk5qyuu41nEBVqlYLePaxPpjoLDskc3OZNdmsixTalwYEAS2R8xAW04Q4MUxnh1G8M0f9zL1pOmWrkT3Obfvfb+qbqnPOU93fe65j9QfnT59n1QVkiRJkgb+vb4DSJIkSePEgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLjlAtyknOS/LskleQ3VyOUJEmaLkm2DrtF+/h3SY4k+adJ3tV3Rk2P9afxOR8DzgSeAK4D/tmKJpIkSdPs68DB4cc/B1wEfBL4jST/YVX9eW/JNDVOpyBfB/xL4BvAl5O8s6r+dGVjSZKkKfX9qvr/XXxL8m+A/xX4O8A/7iWVpsop3WKR5BLgPcDvAf8b8FfAtauQS5Ik6RVHh3++2GsKTY1TvQf5OuAF4I6qehb4A+DvJfGX/SRJ0kp4XZJzh4/zkmwH/mfgGeCOnrNpSoxcbJP8+8Au4Per6oXh7t8DNgJXrEI2SZI0ff4H4Njw8SSD+5GPA++vqv+7z2CaHqdy5ffvAOcwKMWv+APgaeA/W8lQkiRpau0FPjR8/KfAjcC5wMEk7+gzmKbHqfyS3nUM/je3kORvNvv/EPi7Sc6tqmdWNJ0kSZo2/6aq/qjZ/laS7wH3AV8AdvYTS9NkpIKcZBPwASDA48sM+03gyyuUS5IkCYCq+pMkzwO/1ncWTYdRryBfy6Ac/+fAv13i+P/E4AqzBVmSJK2G9cDf6DuEpsNJC/LwHSo+ATxUVbctM+bdwD9McllVHUpyBvBO4GdV9eRKBpYkSdMlyYeAs4B/tWj/O4Ezqur/6iWYJtYoV5A/DJwH/JMTjLkD+IcMriIfAjYAjwLfA7a+poSSJGmaXJLkN4cf/w3g3Qx+gv1XwH+/aOz/AbyDwU+5pRUzSkG+bvjnncsNqKqHkzwO7EzyX61IMkmSNI12DR8ALwPPMnhDgN+tqkO9pdJUSVX1nUGSJEkaG66AJ0mSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNca2ICfZl+TpJA8vczxJvpJkPsmDSS7pOqMkSVq77BpaztgWZOB2YNsJjm8HNg8fu4GvdpBJkiRNjtuxa2gJY1uQq+oe4LkTDNkBfK0G7gPOTvK2btJJkqS1zq6h5Yyykt642gA81WwvDPf9aPHAJLsZ/M+Ps84669ILL7ywk4CSJE2a+++//5mqmuk7R0fsGmvc6c7XtVyQl1p3fcllAatqL7AXYHZ2tubm5lYzlyRJEyvJn/edoUN2jTXudOfr2N5iMYIF4LxmeyNwtKcskiRp8tg1ptRaLsgHgGuGv2H6PuD5qnrVjzwkSZJOk11jSo3tLRZJvg5sBc5NsgB8DjgDoKr2AAeBK4F54GfAtf0klSRJa5FdQ8sZ24JcVbtOcryAT3UUR5IkTRi7hpazlm+xkCRJklacBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSdLUSrItyWNJ5pPctMTxNyX5ZpIfJDmc5No+cqpbFmRJkjSVkqwDbgG2A1uAXUm2LBr2KeCRqroY2Ap8KcmZnQZV5yzIkiRpWl0OzFfVkap6EdgP7Fg0poA3JAnweuA54Hi3MdU1C7IkSZpWG4Cnmu2F4b7WzcC7gKPAQ8BnqurlxV8oye4kc0nmjh07tlp51RELsiRJmlZZYl8t2r4CeAD4BeA9wM1J3viqT6raW1WzVTU7MzOz8knVKQuyJEmaVgvAec32RgZXilvXAnfWwDzwBHBhR/nUEwuyJEmaVoeAzUk2DX/xbidwYNGYJ4EPAiR5K3ABcKTTlOrc+r4DSJIk9aGqjie5AbgbWAfsq6rDSa4fHt8DfB64PclDDG7JuLGqnukttDphQZYkSVOrqg4CBxft29N8fBT4cNe51C9vsZAkSZIaFmRJkiSpYUGWJEmSGhZkSZIkqWFBliRJkhoWZEmSJKlhQZYkSZIaFmRJkiSpYUGWJEmSGhZkSZIkqWFBliRJkhoWZEmSJKlhQZYkSZIaFmRJkjS1kmxL8liS+SQ3LTNma5IHkhxO8r2uM6p76/sOIEmS1Ick64BbgA8BC8ChJAeq6pFmzNnArcC2qnoyyVv6SasueQVZkiRNq8uB+ao6UlUvAvuBHYvGXA3cWVVPAlTV0x1nVA8syJIkaVptAJ5qtheG+1rnA+ck+W6S+5Ncs9QXSrI7yVySuWPHjq1SXHXFgixJkqZVlthXi7bXA5cCHwGuAH4nyfmv+qSqvVU1W1WzMzMzK59UnfIeZEmSNK0WgPOa7Y3A0SXGPFNVLwAvJLkHuBh4vJuI6oNXkCVJ0rQ6BGxOsinJmcBO4MCiMd8A3p9kfZLXAe8FHu04pzrmFWRJkjSVqup4khuAu4F1wL6qOpzk+uHxPVX1aJLvAA8CLwO3VdXD/aVWFyzIkiRpalXVQeDgon17Fm1/Efhil7nUL2+xkCRJkhoWZEmSJKkx1gX5ZMs/JnlTkm8m+cFw+cdr+8gpSZKkyTG2BblZ/nE7sAXYlWTLomGfAh6pqouBrcCXhr+FKkmSJJ2WsS3IjLb8YwFvSBLg9cBzwPFuY0qSJGmSjHNBHmX5x5uBdzF4U++HgM9U1cuLv5DLP0qSJGlU41yQR1n+8QrgAeAXgPcANyd546s+yeUfJUmSNKJxLsijLP94LXBnDcwDTwAXdpRPkiRJE2icC/Ioyz8+CXwQIMlbgQuAI52mlCRJ0kQZ25X0Rln+Efg8cHuShxjcknFjVT3TW2hJkiSteWNbkOHkyz9W1VHgw13nkiRJ0uQa51ssJEmSpM5ZkCVJkqSGBVmSJElqWJAlSdLUSrItyWNJ5pPcdIJxlyV5KclVXeZTPyzIkiRpKiVZB9wCbAe2ALuSbFlm3BcYvLOWpoAFWZIkTavLgfmqOlJVLwL7gR1LjPs0cAfwdJfh1B8LsiRJmlYbgKea7YXhvr+WZAPwUWAPJ5Bkd5K5JHPHjh1b8aDqlgVZkiRNqyyxrxZtf5nBQmQvnegLVdXeqpqtqtmZmZkVC6h+jPVCIZIkSatoATiv2d4IHF00ZhbYnwTgXODKJMer6q5uIqoPFmRJkjStDgGbk2wCfgjsBK5uB1TVplc+TnI78C3L8eSzIEuSpKlUVceT3MDg3SnWAfuq6nCS64fHT3jfsSaXBVmSJE2tqjoIHFy0b8liXFWf6CKT+ucv6UmSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktSwIEuSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktSwIEuSJEkNC7IkSZpaSbYleSzJfJKbljj+sSQPDh/3Jrm4j5zqlgVZkiRNpSTrgFuA7cAWYFeSLYuGPQH8alVdBHwe2NttSvXBgixJkqbV5cB8VR2pqheB/cCOdkBV3VtVPx5u3gds7DijemBBliRJ02oD8FSzvTDct5zrgG8vdSDJ7iRzSeaOHTu2ghHVBwuyJEmaVlliXy05MPkAg4J841LHq2pvVc1W1ezMzMwKRlQf1vcdQJIkqScLwHnN9kbg6OJBSS4CbgO2V9WzHWVTj7yCLEmSptUhYHOSTUnOBHYCB9oBSd4O3Al8vKoe7yGjeuAVZEmSNJWq6niSG4C7gXXAvqo6nOT64fE9wGeBNwO3JgE4XlWzfWVWNyzIkiRpalXVQeDgon17mo8/CXyy61zql7dYSJIkSQ0LsiRJktSwIEuSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktSwIEuSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1BjrgpxkW5LHkswnuWmZMVuTPJDkcJLvdZ1RkiRJk2V93wGWk2QdcAvwIWABOJTkQFU90ow5G7gV2FZVTyZ5Sz9pJUmSNCnG+Qry5cB8VR2pqheB/cCORWOuBu6sqicBqurpjjNKkqQ17GQ/rc7AV4bHH0xySR851a1xLsgbgKea7YXhvtb5wDlJvpvk/iTXLPWFkuxOMpdk7tixY6sUV5IkrSXNT6u3A1uAXUm2LBq2Hdg8fOwGvtppSPVinAtylthXi7bXA5cCHwGuAH4nyfmv+qSqvVU1W1WzMzMzK59UkiStRaP8tHoH8LUauA84O8nbug6qbo3tPcgMrhif12xvBI4uMeaZqnoBeCHJPcDFwOPdRJQkSWvYUj+tfu8IYzYAP2oHJdnN4AozwF8meXhlo3buXOCZvkOsgAtO55PGuSAfAjYn2QT8ENjJ4J7j1jeAm5OsB85kMKn/cacpJUnSWjXKT6tHGUNV7QX2AiSZq6rZ1x6vP5PwHGDwPE7n88a2IFfV8SQ3AHcD64B9VXU4yfXD43uq6tEk3wEeBF4Gbquqtf4/NkmS1I1Rf1p9sjGaMGNbkAGq6iBwcNG+PYu2vwh8sctckiRpIozy0+oDwA1J9jP4SfXzVfUjNNHGuiBLkiStllF+Ws3gQt2VwDzwM+DaEb703lWK3KVJeA5wms8jVa+6jWaizc7O1tzcad2OIknS1Ety/yTcmyqdyDi/zZskSZLUOQuyJEmS1LAgS5IknYZJWKZ6hOewNcnzSR4YPj7bR84TSbIvydPLvff06bwOFmRJkqRTNAnLVI/4HAD+uKreM3z8j52GHM3twLYTHD/l18GCLEmSdOomYZnqUZ7D2Kuqe4DnTjDklF8HC7IkSdKpW24J6lMd06dR8/1ykh8k+XaSd3cTbUWd8uvg+yBLkiSduhVbprpHo+T7PvCOqvppkiuBuxjcqrCWnPLr4BVkSZKkUzcJy1SfNF9V/aSqfjr8+CBwRpJzu4u4Ik75dbAgS5Iknbq/XqY6yZkMlqk+sGjMAeCa4bsovI/xW6b6pM8hyc8nyfDjyxl0x2c7T/ranPLr4C0WkiRJp2gVl6nuzIjP4Srgt5IcB/4C2Fljtgxzkq8DW4FzkywAnwPOgNN/HVxqWpIkjcylpjUNvMVCkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkTaUk+5I8neThZY4nyVeSzCd5MMklXWdUP8a6ICfZluSx4cS86QTjLkvyUpKruswnSZLWtNuBbSc4vh3YPHzsBr7aQSaNgbEtyEnWAbcwmJxbgF1Jtiwz7gvA3d0mlCRJa1lV3QM8d4IhO4Cv1cB9wNlJ3tZNOvVpfd8BTuByYL6qjgAk2c9goj6yaNyngTuAy7qNJ0mSJtwG4Klme2G470eLBybZzeAqM2edddalF154YScBdWL333//M1U1c6qfN84FealJ+d52QJINwEeBX8OCLEmSVlaW2FdLDayqvcBegNnZ2Zqbm1vNXBpRkj8/nc8b21ssGG1Sfhm4sapeOuEXSnYnmUsyd+zYsRULKEmSJtoCcF6zvRE42lMWdWicC/Iok3IW2J/kz4CrgFuT/PriL1RVe6tqtqpmZ2ZO+Sq7JEmaTgeAa4bvZvE+4PmqetXtFZo843yLxSFgc5JNwA+BncDV7YCq2vTKx0luB75VVXd1GVKSJK1NSb4ObAXOTbIAfA44A6Cq9gAHgSuBeeBnwLX9JFXXxrYgV9XxJDcweHeKdcC+qjqc5Prh8T29BpQkSWtaVe06yfECPtVRHI2RsS3IAFV1kMH/3tp9SxbjqvpEF5kkSZI02cb5HmRJkiSpcxZkSZIkqWFBliRJkhoWZEmSJKlhQZYkSZIaFmRJkiSpYUGWJEmSGhZkSZIkqWFBliRJkhoWZEmSJKlhQZYkSZIaFmRJkiSpYUGWJElTK8m2JI8lmU9y0xLH35Tkm0l+kORwkmv7yKluWZAlSdJUSrIOuAXYDmwBdiXZsmjYp4BHqupiYCvwpSRndhpUnbMgS5KkaXU5MF9VR6rqRWA/sGPRmALekCTA64HngOPdxlTXLMiSJGlabQCearYXhvtaNwPvAo4CDwGfqaqXF3+hJLuTzCWZO3bs2GrlVUcsyJIkaVpliX21aPsK4AHgF4D3ADcneeOrPqlqb1XNVtXszMzMyidVpyzIkiRpWi0A5zXbGxlcKW5dC9xZA/PAE8CFHeVTTyzIkiRpWh0CNifZNPzFu53AgUVjngQ+CJDkrcAFwJFOU6pz6/sOIEmS1IeqOp7kBuBuYB2wr6oOJ7l+eHwP8Hng9iQPMbgl48aqeqa30OqEBVmSJE2tqjoIHFy0b0/z8VHgw13nUr+8xUKSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRNrSTbkjyWZD7JTcuM2ZrkgSSHk3yv64zq3vq+A0iSJPUhyTrgFuBDwAJwKMmBqnqkGXM2cCuwraqeTPKWftKqS15BliRJ0+pyYL6qjlTVi8B+YMeiMVcDd1bVkwBV9XTHGdUDC7IkSZpWG4Cnmu2F4b7W+cA5Sb6b5P4k1yz1hZLsTjKXZO7YsWOrFFddsSBLkqRplSX21aLt9cClwEeAK4DfSXL+qz6pam9VzVbV7MzMzMonVae8B1mSJE2rBeC8ZnsjcHSJMc9U1QvAC0nuAS4GHu8movrgFWRJkjStDgGbk2xKciawEziwaMw3gPcnWZ/kdcB7gUc7zqmOeQVZkiRNpao6nuQG4G5gHbCvqg4nuX54fE9VPZrkO8CDwMvAbVX1cH+p1QULsiRJmlpVdRA4uGjfnkXbXwS+2GUu9ctbLCRJkqSGBVmSJElqWJAlSZKkxlgX5JOtj57kY0keHD7uTXJxHzklSZI0Oca2IDfro28HtgC7kmxZNOwJ4Fer6iLg88DeblNKkiRp0oxtQWaE9dGr6t6q+vFw8z4Gb/AtSZIknbZxLsijrI/eug749lIHXB9dkiRJoxrngjzK+uiDgckHGBTkG5c67vrokiRJGtU4LxQyyvroJLkIuA3YXlXPdpRNkiRJE2qcryCfdH30JG8H7gQ+XlWP95BRkiRJE2ZsryCPsj468FngzcCtSQCOV9VsX5klSZK09o1tQYaTr49eVZ8EPtl1LkmSJE2ucb7FQpIkSeqcBVmSJE2tk63a24y7LMlLSa7qMp/6YUGWJElTacRVe18Z9wUGvxelKWBBliRJ0+qkq/YOfRq4A3i6y3DqjwVZkiRNq5Ou2ptkA/BRYA8n4Kq9k8WCLEmSptUoq/Z+Gbixql460Rdy1d7JMtZv8yZJkrSKRlm1dxbYP1xv4VzgyiTHq+qubiKqDxZkSZI0rf561V7ghwxW7b26HVBVm175OMntwLcsx5PPgixJkqbSiKv2agpZkCVJ0tQ62aq9i/Z/ootM6p+/pCdJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZKmVpJtSR5LMp/kpiWOfyzJg8PHvUku7iOnumVBliRJUynJOuAWYDuwBdiVZMuiYU8Av1pVFwGfB/Z2m1J9sCBLkqRpdTkwX1VHqupFYD+wox1QVfdW1Y+Hm/cBGzvOqB5YkCVJ0rTaADzVbC8M9y3nOuDbSx1IsjvJXJK5Y8eOrWBE9cGCLEmSplWW2FdLDkw+wKAg37jU8araW1WzVTU7MzOzghHVh/V9B5AkSerJAnBes70ROLp4UJKLgNuA7VX1bEfZ1COvIEuSpGl1CNicZFOSM4GdwIF2QJK3A3cCH6+qx3vIqB54BVmSJE2lqjqe5AbgbmAdsK+qDie5fnh8D/BZ4M3ArUkAjlfVbF+Z1Q0LsiRJmlpVdRA4uGjfnubjTwKf7DqX+uUtFpIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVJjrAtykm1JHksyn+SmJY4nyVeGxx9MckkfOSVJ0tpk19BSxrYgJ1kH3AJsB7YAu5JsWTRsO7B5+NgNfLXTkJIkac2ya2g5Y1uQgcuB+ao6UlUvAvuBHYvG7AC+VgP3AWcneVvXQSVJ0ppk19CS1vcd4AQ2AE812wvAe0cYswH4UTsoyW4G/+sD+MskD69sVJ3EucAzfYeYMp7zfnjeu+c5794FfQdYQXaN5U3K363Tmq/jXJCzxL46jTFU1V5gL0CSuaqafe3xNCrPefc85/3wvHfPc969JHN9Z1hBdo1lTMJzgNOfr+N8i8UCcF6zvRE4ehpjJEmSlmLX0JLGuSAfAjYn2ZTkTGAncGDRmAPANcPfMH0f8HxV/WjxF5IkSVqCXUNLGttbLKrqeJIbgLuBdcC+qjqc5Prh8T3AQeBKYB74GXDtCF967ypF1vI8593znPfD8949z3n3Juac2zVOaBKeA5zm80jVq26jkSRJkqbWON9iIUmSJHXOgixJkiQ1JrYgu3Rk90Y45x8bnusHk9yb5OI+ck6Sk53zZtxlSV5KclWX+SbRKOc8ydYkDyQ5nOR7XWecRCP8+/KmJN9M8oPheR/lPlEtI8m+JE8v916+fg8dmISuMcJz2Jrk+eG/aQ8k+WwfOU9kVeZrVU3cg8GN9n8K/BJwJvADYMuiMVcC32bw/obvA/6k79xr+THiOf9bwDnDj7d7zlf/nDfj/gWDXzS5qu/ca/kx4jw/G3gEePtw+y19517rjxHP+z8AvjD8eAZ4Djiz7+xr9QH8beAS4OFljk/999BJ6BojPoetwLf6znqS57Hi83VSryC7dGT3TnrOq+reqvrxcPM+Bu8lqdM3yjwH+DRwB/B0l+Em1Cjn/Grgzqp6EqCqPO+v3SjnvYA3JAnwegYF+Xi3MSdHVd3D4Bwux++hk9E1Rv0+MtZWY75OakFeblnIUx2j0Z3q+byOwf/mdPpOes6TbAA+CuzpMNckG2Wenw+ck+S7Se5Pck1n6SbXKOf9ZuBdDBZweAj4TFW93E28qeT30MnoGqPm++Xh7UvfTvLubqKtqFN+Hcb2fZBfoxVbOlIjG/l8JvkAg4L8K6uaaPKNcs6/DNxYVS8NLqzpNRrlnK8HLgU+CPwc8K+T3FdVj692uAk2ynm/AngA+DXgncAfJvnjqvrJaoebUn4PnYyuMUq+7wPvqKqfJrkSuAvYvOrJVtYpvw6TegXZpSO7N9L5THIRcBuwo6qe7SjbpBrlnM8C+5P8GXAVcGuSX+8m3kQa9d+W71TVC1X1DHAP4C+kvjajnPdrGdzaUlU1DzwBXNhRvmnk99DJ6BonzVdVP6mqnw4/PgickeTc7iKuiFN+HSa1ILt0ZPdOes6TvB24E/i4V9NWxEnPeVVtqqpfrKpfBH4f+O2quqv7qBNjlH9bvgG8P8n6JK8D3gs82nHOSTPKeX+SwVV7krwVuAA40mnK6eL30MnoGqN87/754b39JLmcQXdcaxe4Tvl1mMhbLGr1lo7UMkY8558F3szgKibA8aqa7SvzWjfiOdcKGuWcV9WjSb4DPAi8DNxWVUu+9ZBGM+Jc/zxwe5KHGPw49cbhFXydhiRfZ/DuBecmWQA+B5wBfg99xSR0jRGfw1XAbyU5DvwFsLOGbw0xLlZjvrrUtCRJktSY1FssJEmSpNNiQZYkSZIaFmRJkiSpYUGWJEmSGhZkSZIkqWFBliRJkhoWZEmSJKlhQZYkSZIaFmRJkiSpYUGWJEmSGhZkSZIkqWFBliRJkhoWZEmSJKkxckFO8rok/2WSP07yXJK/SvL/JDmY5BNJ1q9mUOlEkmxNUs3jpSQ/TvJwkt9Lsi1J+s4pSZLG30ilNsnfBP4AOB/4I+B3gWeAtwD/MfBPgS3Af7s6MaWRfR04CAR4A3AB8OvANcAfJfm7VfVve8wnSZLG3EkLcpKfA74F/BLwG1V156IhX0hyGXDZKuSTTtX3q+qftTuS/H3gHwF/n0GB3t5HMEmStDaMcovFJxlchfvSEuUYgKo6VFW3rmgyaYVU1UtV9V8D/yewLcmv9J1JkiSNr1EK8lXDP/euZhCpA/9k+OdHek0hSZLG2igF+T8A/t+qOrLaYaRV9uDwz/N7TSFJksbaKAX5jcBPVjuI1IFX5vEbe00hSZLG2igF+ScM3g1AWuteKcb+h0+SJC1rlIL8MPDGJL+02mGkVXbR8M/Hek0hSZLG2igF+Y7hn59czSBSB64b/vkHvaaQJEljbZSCfBuDK27/TZIdSw1IcmmS326235bkwiSvW6Gc0mlLsi7J/wL8CnCwqv5Vc+x1w7n6tv4SSpKkcXLShUKq6mdJ/hMGV93uSvLPgT8EngVmgA8AVzBYiOEVvwv8veGx765wZulELknym8OP25X03gH8c+DqReMvB/4l8HvAJzrKKEmSxthIS01X1XyS/wj4L4DfAP474PXAc8AcgzL8v69WSOkU7Bo+XgZ+CiwA3wO+XlXf6TOYJElaG1JVfWeQJEmSxsYo9yBLkiRJU8OCLEmSJDUsyJIkSVLDgixJkiQ1LEDUnfoAAA1hSURBVMiSJElSY2wLcpJ9SZ5O8vAyx5PkK0nmkzyY5JKuM0rgXJUkadKMbUEGbge2neD4dmDz8LEb+GoHmaSl3I5zVZKkiTG2Bbmq7mGwEMlydgBfq4H7gLNdLlh9cK5KkjRZRlpJb0xtAJ5qtheG+360eGCS3Qyu3HHWWWddeuGFF3YSUMu7//77n6mqmb5zdMS5KklSD063b6zlgpwl9i25LGBV7QX2AszOztbc3Nxq5tIIkvx53xk65FyVJKkHp9s3xvYWixEsAOc12xuBoz1lkU7EuSpJ0hqylgvyAeCa4TsEvA94vqpe9SNraQw4VyVJWkPG9haLJF8HtgLnJlkAPgecAVBVe4CDwJXAPPAz4Np+kmraOVclSZosY1uQq2rXSY4X8KmO4kjLcq5KkjRZ1vItFpIkSdKKsyBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktSwIEuSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktSwIEuSJEkNC7IkSZLUsCBLkiRJjbEuyEm2JXksyXySm5Y4/qYk30zygySHk1zbR07JuSpJ0uQY24KcZB1wC7Ad2ALsSrJl0bBPAY9U1cXAVuBLSc7sNKimnnNVkqTJMrYFGbgcmK+qI1X1IrAf2LFoTAFvSBLg9cBzwPFuY0rOVUmSJsk4F+QNwFPN9sJwX+tm4F3AUeAh4DNV9fLiL5Rkd5K5JHPHjh1brbyaXs5VSZImyDgX5CyxrxZtXwE8APwC8B7g5iRvfNUnVe2tqtmqmp2ZmVn5pJp2zlVJkibIOBfkBeC8Znsjg6tvrWuBO2tgHngCuLCjfNIrnKuSJE2QcS7Ih4DNSTYNf5lpJ3Bg0ZgngQ8CJHkrcAFwpNOUknNVkqSJsr7vAMupquNJbgDuBtYB+6rqcJLrh8f3AJ8Hbk/yEIMfc99YVc/0FlpTybkqSdJkGduCDFBVB4GDi/btaT4+Cny461zSYs5VSZImxzjfYiFJkiR1zoIsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSY6wLcpJtSR5LMp/kpmXGbE3yQJLDSb7XdUYJnKuSJE2S9X0HWE6SdcAtwIeABeBQkgNV9Ugz5mzgVmBbVT2Z5C39pNU0c65KkjRZxvkK8uXAfFUdqaoXgf3AjkVjrgburKonAarq6Y4zSuBclSRpooxzQd4APNVsLwz3tc4Hzkny3ST3J7lmqS+UZHeSuSRzx44dW6W4mmLOVUmSJsg4F+Qssa8Wba8HLgU+AlwB/E6S81/1SVV7q2q2qmZnZmZWPqmmnXNVkqQJMrb3IDO4Cndes70ROLrEmGeq6gXghST3ABcDj3cTUQKcq5IkTZRxvoJ8CNicZFOSM4GdwIFFY74BvD/J+iSvA94LPNpxTsm5KknSBBnbK8hVdTzJDcDdwDpgX1UdTnL98Pieqno0yXeAB4GXgduq6uH+UmsaOVclSZosqVp8q+Rkm52drbm5ub5jTL0k91fVbN85xplzVZKk1+Z0+8Y432IhSZIkdc6CLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDUsyJIkSVLDgixJkiQ1LMiSJElSw4IsSZIkNSzIkiRJUsOCLEmSJDXGuiAn2ZbksSTzSW46wbjLkryU5Kou80mvcK5KkjQ5xrYgJ1kH3AJsB7YAu5JsWWbcF4C7u00oDThXJUmaLGNbkIHLgfmqOlJVLwL7gR1LjPs0cAfwdJfhpIZzVZKkCTLOBXkD8FSzvTDc99eSbAA+Cuw50RdKsjvJXJK5Y8eOrXhQTT3nqiRJE2ScC3KW2FeLtr8M3FhVL53oC1XV3qqararZmZmZFQsoDTlXJUmaIOv7DnACC8B5zfZG4OiiMbPA/iQA5wJXJjleVXd1E1ECnKuSJE2UcS7Ih4DNSTYBPwR2Ale3A6pq0ysfJ7kd+JaFQz1wrkqSNEHGtiBX1fEkNzD4jf91wL6qOpzk+uHxE97LKXXFuSpJ0mQZ24IMUFUHgYOL9i1ZNqrqE11kkpbiXJUkaXKM8y/pSZIkSZ2zIEuSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktSwIEuSJEkNC7IkSZLUsCBLkiRJDQuyJEmS1LAgS5IkSQ0LsiRJktQY64KcZFuSx5LMJ7lpieMfS/Lg8HFvkov7yCk5VyVJmhxjW5CTrANuAbYDW4BdSbYsGvYE8KtVdRHweWBvtykl56okSZNmbAsycDkwX1VHqupFYD+wox1QVfdW1Y+Hm/cBGzvOKIFzVZKkiTLOBXkD8FSzvTDct5zrgG8vdSDJ7iRzSeaOHTu2ghElwLkqSdJEGeeCnCX21ZIDkw8wKB03LnW8qvZW1WxVzc7MzKxgRAlwrkqSNFHW9x3gBBaA85rtjcDRxYOSXATcBmyvqmc7yia1nKuSJE2Qcb6CfAjYnGRTkjOBncCBdkCStwN3Ah+vqsd7yCiBc1WSpIkytleQq+p4khuAu4F1wL6qOpzk+uHxPcBngTcDtyYBOF5Vs31l1nRyrkqSNFlSteStkhNrdna25ubm+o4x9ZLcb0E8MeeqJEmvzen2jXG+xUKSJEnqnAVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaliQJUmSpIYFWZIkSWpYkCVJkqSGBVmSJElqWJAlSZKkhgVZkiRJaox1QU6yLcljSeaT3LTE8ST5yvD4g0ku6SOn5FyVJGlyjG1BTrIOuAXYDmwBdiXZsmjYdmDz8LEb+GqnISWcq5IkTZqxLcjA5cB8VR2pqheB/cCORWN2AF+rgfuAs5O8reugmnrOVUmSJsj6vgOcwAbgqWZ7AXjvCGM2AD9qByXZzeCqHcBfJnl4ZaN27lzgmb5DvEYX9B1gBTlXJ8sk/P1aazzn3fOcd89z3o/T6hvjXJCzxL46jTFU1V5gL0CSuaqafe3x+jMpz6HvDCvIuTpBPO/d85x3z3PePc95P063b4zzLRYLwHnN9kbg6GmMkVabc1WSpAkyzgX5ELA5yaYkZwI7gQOLxhwArhm+Q8D7gOer6keLv5C0ypyrkiRNkLG9xaKqjie5AbgbWAfsq6rDSa4fHt8DHASuBOaBnwHXjvCl965S5C75HMaIc3XieN675znvnue8e57zfpzWeU/Vq26DlCRJkqbWON9iIUmSJHXOgixJkiQ1JrYgT8LSvyM8h61Jnk/ywPDx2T5yLifJviRPL/devmvhNejCJMzVtWaEc/6x4bl+MMm9SS7uI+ckOdk5b8ZdluSlJFd1mW9SjXLeh99LHkhyOMn3us44aUb49+VNSb6Z5AfDcz7K76ToBFalb1TVxD0Y/KLUnwK/BJwJ/ADYsmjMlcC3Gbw/7fuAP+k792k8h63At/rOeoLn8LeBS4CHlzk+1q/BGL3OU3+eejjnfws4Z/jxds/56p/zZty/YPBLrVf1nXutP0ac62cDjwBvH26/pe/ca/kx4jn/B8AXhh/PAM8BZ/adfS0/VqNvTOoV5ElY+neU5zDWquoeBn/xlzPur0EXJmGurjUnPedVdW9V/Xi4eR+D963W6Rv137NPA3cAT3cZboKNct6vBu6sqicBqspz/9qMcs4LeEOSAK9n8H3yeLcxJ8tq9I1JLcjLLet7qmP6NGq+Xx7+mObbSd7dTbQVM+6vQRcmYa6uNad6Pq9jcOVBp++k5zzJBuCjwJ4Oc026Ueb6+cA5Sb6b5P4k13SWbjKNcs5vBt7FYLGoh4DPVNXL3cSbWqf8fXRs3wf5NVqxpX97NEq+7wPvqKqfJrkSuAvYvOrJVs64vwZdmIS5utaMfD6TfIBBQf6VVU00+UY5518GbqyqlwYX1rQCRjnv64FLgQ8CPwf86yT3VdXjqx1uQo1yzq8AHgB+DXgn8IdJ/riqfrLa4abYKX8fndQryJOw9O9J81XVT6rqp8OPDwJnJDm3u4iv2bi/Bl2YhLm61ox0PpNcBNwG7KiqZzvKNqlGOeezwP4kfwZcBdya5Ne7iTexRv335TtV9UJVPQPcA/hLqadvlHN+LYPbWqqq5oEngAs7yjetTvn76KQW5ElY+vekzyHJzw/vYSLJ5Qxez7X0jXzcX4MuTMJcXWtG+bv1duBO4ONeSVsRJz3nVbWpqn6xqn4R+H3gt6vqru6jTpRR/n35BvD+JOuTvA54L/BoxzknySjn/EkGV+xJ8lbgAuBIpymnzyl/H53IWyxq9Zb+7cyIz+Eq4LeSHAf+AthZw1/XHAdJvs7gnTbOTbIAfA44A9bGa9CFSZira82I5/yzwJsZXMUEOF5Vs31lXutGPOdaYaOc96p6NMl3gAeBl4HbqmrJt8rSyY041z8P3J7kIQY/+r9xePVep2k1+oZLTUuSJEmNSb3FQpIkSTotFmRJkiSpYUGWJEmSGhZkSZIkqWFBliRJkhoWZEmSJKlhQZYkSZIa/x/U9HWxIdeUUAAAAABJRU5ErkJggg==\n", | |
"text/plain": "<Figure size 720x504 with 5 Axes>" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "layout = '''\n AAAB\n CDEB\n '''\nfig = plt.figure(figsize=(10, 5))\naxes, spec = make_panelled_axes(layout, fig=fig)\nlabel_panels(axes)\nplt.tight_layout()", | |
"execution_count": 57, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 720x360 with 5 Axes>" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
] | |
} | |
], | |
"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": "", | |
"data": { | |
"description": "Automatic scientific axes layout for matplotlib.ipynb", | |
"public": true | |
} | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment