Title: [ENH]: Make "No artists with labels found to put in legend" a warning · Issue #27145 · matplotlib/matplotlib · GitHub
Open Graph Title: [ENH]: Make "No artists with labels found to put in legend" a warning · Issue #27145 · matplotlib/matplotlib
X Title: [ENH]: Make "No artists with labels found to put in legend" a warning · Issue #27145 · matplotlib/matplotlib
Description: Problem When I receive this issue, it's hard to debug and find the specific call to ax.legend() if I can't raise Warnings to Exceptions. I sometimes nest plotting functions in order to draw the same plot different ways or arrange plots i...
Open Graph Description: Problem When I receive this issue, it's hard to debug and find the specific call to ax.legend() if I can't raise Warnings to Exceptions. I sometimes nest plotting functions in order to draw the sam...
X Description: Problem When I receive this issue, it's hard to debug and find the specific call to ax.legend() if I can't raise Warnings to Exceptions. I sometimes nest plotting functions in order to draw...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/27145
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[ENH]: Make \"No artists with labels found to put in legend\" a warning","articleBody":"### Problem\r\n\r\nWhen I receive this issue, it's hard to debug and find the specific call to `ax.legend()` if I can't raise Warnings to Exceptions. I sometimes nest plotting functions in order to draw the same plot different ways or arrange plots in a composite figure, depending upon the presentation.\r\n\r\nMWE and Full message:\r\n\r\n```python\r\nfrom matplotlib import pyplot as plt\r\nimport warnings\r\n\r\nwarnings.simplefilter(\"error\", category=Warning)\r\nplt.plot([1,2,3])\r\nplt.legend()\r\n```\r\n(no error, plot appears)\r\n\u003e No artists with labels found to put in legend. Note that artists whose label start with an underscore are ignored when legend() is called with no argument.\r\n\r\n### Proposed solution\r\n\r\nMake this a true `UserWarning`. Currently, it's a `logging.LogRecord` of level=`logging.Warning`. \r\n```python\r\nlog = logging.getLogger(__name__)\r\n...\r\nlog.warning(\u003cthis message\u003e)\r\n```\r\n**Additional pro:** In the future, it would be easier to find and work on this warning if it is, in fact, a true `Warning`.\r\n\r\n**Con:** It won't be handled by the logging infrastructure. But legend.py uses the default module logger, and the only `LogRecord` that it emits is this one. The only situation I could think of where this might matter is if a user has some override of global logging setup (by calling `logging.setLoggerClass()`) but does not apply a similar philosophy to capturing warnings in STDERR.\r\n","author":{"url":"https://github.com/Jacob-Stevens-Haas","@type":"Person","name":"Jacob-Stevens-Haas"},"datePublished":"2023-10-19T13:51:10.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":8},"url":"https://github.com/27145/matplotlib/issues/27145"}
| 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:124addb9-6ccc-cadc-c3d7-945c7a339991 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CFCE:13D32C:4C4B1B:6761DB:6A51C6DB |
| html-safe-nonce | 31677252a611219298ca7f25fc48a98862bfe2677be6633aa71d93cc2d95529e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRkNFOjEzRDMyQzo0QzRCMUI6Njc2MURCOjZBNTFDNkRCIiwidmlzaXRvcl9pZCI6IjE3NDIxNjkyNjUzOTI0MzY5NTUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 657004c85926331e8e07bc852ab0ce9b2827e3b38b1ba42ca03e4ce7a66fc434 |
| hovercard-subject-tag | issue:1952320336 |
| 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/27145/issue_layout |
| twitter:image | https://opengraph.githubassets.com/53112a1d1c4d5005adb61d6f9f226bcf7234e4f4e539eed062e83f59efbc161c/matplotlib/matplotlib/issues/27145 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/53112a1d1c4d5005adb61d6f9f226bcf7234e4f4e539eed062e83f59efbc161c/matplotlib/matplotlib/issues/27145 |
| og:image:alt | Problem When I receive this issue, it's hard to debug and find the specific call to ax.legend() if I can't raise Warnings to Exceptions. I sometimes nest plotting functions in order to draw the sam... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Jacob-Stevens-Haas |
| 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