Title: [Bug]: hexbin cannot always accept np.max like functions as reduce_C_function · Issue #27103 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: hexbin cannot always accept np.max like functions as reduce_C_function · Issue #27103 · matplotlib/matplotlib
X Title: [Bug]: hexbin cannot always accept np.max like functions as reduce_C_function · Issue #27103 · matplotlib/matplotlib
Description: Bug summary The default reduce_C_function (np.mean) returns np.nan for size 0 sequence and hexbin does not cause Error. However, the default mincnt (=0) and reduce_C_function=np.max can cause Error for some gridsize & extent settings due...
Open Graph Description: Bug summary The default reduce_C_function (np.mean) returns np.nan for size 0 sequence and hexbin does not cause Error. However, the default mincnt (=0) and reduce_C_function=np.max can cause Error...
X Description: Bug summary The default reduce_C_function (np.mean) returns np.nan for size 0 sequence and hexbin does not cause Error. However, the default mincnt (=0) and reduce_C_function=np.max can cause Error...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/27103
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: hexbin cannot always accept np.max like functions as reduce_C_function","articleBody":"### Bug summary\r\n\r\nThe default reduce_C_function (np.mean) returns np.nan for size 0 sequence and hexbin does not cause Error. However, the default mincnt (=0) and reduce_C_function=np.max can cause Error for some gridsize \u0026 extent settings due to zero-sized sequence. \r\n\r\n### Code for reproduction\r\n\r\n```python\r\nimport numpy as np\r\nimport matplotlib.pyplot as plt\r\nx=np.array([0. , 1. , 2. , 0.5, 1.5, 2.5, 0. , 1. , 2. ])\r\ny=np.array([0. , 0. , 0. , 0.8660254 , 0.8660254 ,\r\n 0.8660254 , 1.73205081, 1.73205081, 1.73205081])\r\nextent=(0,2.5,0,np.sqrt(3))\r\nC=np.arange(x.size)\r\ngridsize=(3,1)\r\nplt.hexbin(x,y,C, extent=extent, reduce_C_function=np.max, gridsize=gridsize)\r\n# ValueError: zero-size array to reduction operation maximum which has no identity\r\n```\r\n\r\n\r\n### Actual outcome\r\n\r\nValueError will be raised by numpy max(), which cannot accept zero sized sequence.\r\n\r\n### Expected outcome\r\n\r\nNo error is raised. \r\n\r\n### Additional information\r\n\r\nThis bug/new specification has been introduced by \r\n\r\nhttps://github.com/matplotlib/matplotlib/commit/fcda8c8121ba9007cc57a24fa4ff7bc5a17b6a1c\r\n\r\nApparently, the matplotlib versions\u003e=3.8.0 would have the behavior but versions\u003c3.8.0 do not.\r\n\r\nThe default reduce_C_function (np.mean) returns np.nan for size 0 sequence and it does not cause Error. However, the default mincnt (None and mincnt=0 is assigned for None) and reduce_C_function=np.max can cause Error due to zero-sized sequence. The old versions use 'len(acc) \u003e mincnt' comparison and it kicks size 0 sequence by default. However, the new version uses 'len(acc) \u003e= mincnt' comparison but the default mincnt is still 0. Hence, 0 sized input is not kicked and numpy max() like functions raise Error. It can be fixed by mincnt=0.5 (1 is not compatible with the old matplotlib versions).\r\n\r\nplt.hexbin(x,y,C, extent=extent, reduce_C_function=np.max, gridsize=gridsize, mincnt=0.5)\r\n\r\nIf this is a desired (planed) behavior, it would be nice if the documents (release notes) describe the behavior explicitly. At least my program won't work before fixing the problem, and I have to read the codes and their commit history to find the root cause. \r\n\r\nBest regards\r\n\r\n### Operating system\r\n\r\nWindows and Ubuntu\r\n\r\n### Matplotlib Version\r\n\r\n3.8.0\r\n\r\n### Matplotlib Backend\r\n\r\nQt5Agg or Agg\r\n\r\n### Python version\r\n\r\n3.11.4\r\n\r\n### Jupyter version\r\n\r\nNA\r\n\r\n### Installation\r\n\r\npip","author":{"url":"https://github.com/materia9","@type":"Person","name":"materia9"},"datePublished":"2023-10-16T10:42:19.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/27103/matplotlib/issues/27103"}
| 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:f4c1506d-887d-6da4-b80f-c7a1bdffaf0b |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B314:26FC81:29D1DC9:386AF66:6A53A7C3 |
| html-safe-nonce | 2f7acc1be65692f50c6d22f5cf4a8c9af475166198787275e7a2cec73144edfa |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMzE0OjI2RkM4MToyOUQxREM5OjM4NkFGNjY6NkE1M0E3QzMiLCJ2aXNpdG9yX2lkIjoiNzIwNjc4MDIyMDUxODY3MjMyMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | c02079e17869db420de298c5b7430d529d541b0720b3e5b1c4f5697f71bcda71 |
| hovercard-subject-tag | issue:1944912403 |
| 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/27103/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d70000c882fb9686c4b824ca67f6d768b88e038640eb34c7210d43d2a04496b5/matplotlib/matplotlib/issues/27103 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d70000c882fb9686c4b824ca67f6d768b88e038640eb34c7210d43d2a04496b5/matplotlib/matplotlib/issues/27103 |
| og:image:alt | Bug summary The default reduce_C_function (np.mean) returns np.nan for size 0 sequence and hexbin does not cause Error. However, the default mincnt (=0) and reduce_C_function=np.max can cause Error... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | materia9 |
| 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