Title: FR: Figure.subplots add optional SubplotSpec parameter · Issue #11288 · matplotlib/matplotlib · GitHub
Open Graph Title: FR: Figure.subplots add optional SubplotSpec parameter · Issue #11288 · matplotlib/matplotlib
X Title: FR: Figure.subplots add optional SubplotSpec parameter · Issue #11288 · matplotlib/matplotlib
Description: Figure.subplots is a convenient method for creating a grid of subplots with shared axes, with the redundant tick labels and such automatically handled for you. It would be helpful if this method could also be used to help create more com...
Open Graph Description: Figure.subplots is a convenient method for creating a grid of subplots with shared axes, with the redundant tick labels and such automatically handled for you. It would be helpful if this method co...
X Description: Figure.subplots is a convenient method for creating a grid of subplots with shared axes, with the redundant tick labels and such automatically handled for you. It would be helpful if this method co...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/11288
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"FR: Figure.subplots add optional SubplotSpec parameter","articleBody":"`Figure.subplots` is a convenient method for creating a grid of subplots with shared axes, with the redundant tick labels and such automatically handled for you. It would be helpful if this method could also be used to help create more complicated layouts, such as ones with a few independent sets of shared axes that you would create with several calls to `gridspec.GridSpecFromSubplotSpec`.\r\n\r\nFor example:\r\n\r\n```python\r\nimport matplotlib.pyplot as plt\r\nimport matplotlib.gridspec as gridspec\r\nimport numpy as np\r\n\r\nfig = plt.figure()\r\ngs = gridspec.GridSpec(1,2)\r\n\r\n####\r\n# The following block could be replaced by this proposed function call:\r\n#fig.subplots(nrows=2, ncols=2, subplotspec=gs[0], sharex='col', sharey='all',\r\n# squeeze=False, gridspec_kw=dict(hspace=0.07))\r\ngs0 = gridspec.GridSpecFromSubplotSpec(2, 2, gs[0], hspace=0.07)\r\nax0_00 = fig.add_subplot(gs0[0,0])\r\nax0_01 = fig.add_subplot(gs0[0,1], sharey=ax0_00)\r\nax0_10 = fig.add_subplot(gs0[1,0], sharex=ax0_00, sharey=ax0_00)\r\nax0_11 = fig.add_subplot(gs0[1,1], sharex=ax0_00, sharey=ax0_00)\r\nax0s = np.array([[ax0_00, ax0_01], [ax0_10, ax0_11]])\r\n\r\nfor ax in ax0s[:-1].flatten():\r\n ax.tick_params(axis='x', which='both', labelbottom=False)\r\nfor ax in ax0s[:,1:].flatten():\r\n ax.tick_params(axis='y', which='both', labelleft=False)\r\n####\r\n\r\n####\r\n# The following block could be replaced by this proposed function call:\r\n#fig.subplots(nrows=3, ncols=1, subplotspec=gs[1], sharex='all', sharey='all',\r\n# squeeze=False, gridspec_kw=dict(hspace=0.1))\r\ngs1 = gridspec.GridSpecFromSubplotSpec(3, 1, gs[1], hspace=0.1)\r\nax10 = fig.add_subplot(gs1[0])\r\nax11 = fig.add_subplot(gs1[1], sharex=ax10, sharey=ax10)\r\nax12 = fig.add_subplot(gs1[2], sharex=ax10, sharey=ax10)\r\nax1s = np.array([[ax10], [ax11], [ax12]])\r\n\r\nfor ax in ax1s[:-1].flatten():\r\n ax.tick_params(axis='x', which='both', labelbottom=False)\r\nfor ax in ax1s[:,1:].flatten():\r\n ax.tick_params(axis='y', which='both', labelleft=False)\r\n####\r\n\r\nfig.tight_layout()\r\n\r\nplt.show()\r\n```\r\n\r\n\r\nAdding a `subplotspec` optional argument to `Figure.subplots`, which when supplied would call `gridspec.GridSpecFromSubplotSpec` (with the provided SubplotSpec) instead of `gridspec.GridSpec`, would be all that is required.\r\n\r\nThe exception to this is for constrained layouts, which I'm not familiar with. `gridspec.GridSpecFromSubplotSpec` doesn't accept a figure parameter, but seems to inherit that information from the SubplotSpec, and so would rely on passing the figure to the \"parent\" GridSpec in the first place?\r\n\r\n\r\n","author":{"url":"https://github.com/attoblarg","@type":"Person","name":"attoblarg"},"datePublished":"2018-05-22T20:56:57.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/11288/matplotlib/issues/11288"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:8782b80d-ba44-ac31-dbe4-d983976bee38 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | DD5E:273DA9:26F8F8F:3420BA1:6A521696 |
| html-safe-nonce | 63deff2577c458be569f192a38813e6d80be543eea1ec4d690b9b3bff681a10c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERDVFOjI3M0RBOToyNkY4RjhGOjM0MjBCQTE6NkE1MjE2OTYiLCJ2aXNpdG9yX2lkIjoiMjI0MzYyNTIyMDI2ODQxNzUwIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | e98c39eb9384520fc6dddf64fe15fae79bff9b9b096469e435b5cd11ba32fa67 |
| hovercard-subject-tag | issue:325460048 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/11288/issue_layout |
| twitter:image | https://opengraph.githubassets.com/6f9a88fdadc2f7d56ea452ebe14bca4e2b552252709c1d886554a220cbb168c6/matplotlib/matplotlib/issues/11288 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/6f9a88fdadc2f7d56ea452ebe14bca4e2b552252709c1d886554a220cbb168c6/matplotlib/matplotlib/issues/11288 |
| og:image:alt | Figure.subplots is a convenient method for creating a grid of subplots with shared axes, with the redundant tick labels and such automatically handled for you. It would be helpful if this method co... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | attoblarg |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width