Title: [MNT]: DISCUSSION: Should Axes.grouped_bar() enforce hatch list length or allow cycling like colors? · Issue #30712 · matplotlib/matplotlib · GitHub
Open Graph Title: [MNT]: DISCUSSION: Should Axes.grouped_bar() enforce hatch list length or allow cycling like colors? · Issue #30712 · matplotlib/matplotlib
X Title: [MNT]: DISCUSSION: Should Axes.grouped_bar() enforce hatch list length or allow cycling like colors? · Issue #30712 · matplotlib/matplotlib
Description: Summary Should Axes.grouped_bar() enforce the hatch list length to match the number of datasets, or should it allow automatic cycling, consistent with colors and other style arguments? If we decide that hatch should enforce length, shoul...
Open Graph Description: Summary Should Axes.grouped_bar() enforce the hatch list length to match the number of datasets, or should it allow automatic cycling, consistent with colors and other style arguments? If we decide...
X Description: Summary Should Axes.grouped_bar() enforce the hatch list length to match the number of datasets, or should it allow automatic cycling, consistent with colors and other style arguments? If we decide...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/30712
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[MNT]: DISCUSSION: Should Axes.grouped_bar() enforce hatch list length or allow cycling like colors?","articleBody":"### Summary\n\nShould Axes.grouped_bar() enforce the hatch list length to match the number of datasets,\nor should it allow automatic cycling, consistent with colors and other style arguments?\nIf we decide that hatch should enforce length,\nshould other style arguments (colors, linestyles, markers, etc.)\nalso be updated in the future for consistency —\nor should the broader design direction remain permissive and cycling-based?\n\nArguments for cycling (current behavior)\n\nConsistency: Aligns with colors, linestyles, and markers, maintaining familiar user expectations.\nFlexibility: Shorter lists still produce usable plots without errors.\nUser-friendly: Avoids unnecessary exceptions in exploratory or educational workflows.\nBackward-compatible: Keeps consistent with historical behavior in most Matplotlib APIs.\n\nArguments for enforcing\n\nExplicitness: Detects mistakes when users intend unique styles per dataset.\nClarity: Prevents silent repetition of hatches that could cause visual confusion.\nPredictability: Ensures a clear 1:1 mapping between datasets and style definitions.\n\nRequest for feedback\nBefore finalizing the implementation, feedback is requested on:\nPreferred default behavior (cycle vs enforce)\nWhether the decision should apply only to hatches or be standardized across all style arguments\nPotential implications for the public API and documentation (e.g., user expectations, legend consistency)\n\n### Proposed fix\n\n_No response_","author":{"url":"https://github.com/ilakkmanoharan","@type":"Person","name":"ilakkmanoharan"},"datePublished":"2025-10-31T20:17:20.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/30712/matplotlib/issues/30712"}
| 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:da919be5-1e16-3b34-8df5-f011375a51c2 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C8F6:226804:3354FF:450DDD:6A52EBA0 |
| html-safe-nonce | 1b43d58f3a105893a026ccf8fd6b9b254722ed410f8fadb58af2c34d5b02b0de |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDOEY2OjIyNjgwNDozMzU0RkY6NDUwREREOjZBNTJFQkEwIiwidmlzaXRvcl9pZCI6IjQ3MDU0MjU2MzU2NTY1MjY3NTIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 0802d0980f48f86c98b383ad05f010f4d106fea3ad41b20fb13fced3b822d6f7 |
| hovercard-subject-tag | issue:3576332913 |
| 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/30712/issue_layout |
| twitter:image | https://opengraph.githubassets.com/a7858d92f1ad10b21039bfb0079b08646608926d9da72099096544ae769d0f45/matplotlib/matplotlib/issues/30712 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/a7858d92f1ad10b21039bfb0079b08646608926d9da72099096544ae769d0f45/matplotlib/matplotlib/issues/30712 |
| og:image:alt | Summary Should Axes.grouped_bar() enforce the hatch list length to match the number of datasets, or should it allow automatic cycling, consistent with colors and other style arguments? If we decide... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | ilakkmanoharan |
| 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 | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width