Title: [Bug]: ax.bar raises for all-nan data on matplotlib 3.6.1 · Issue #24127 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: ax.bar raises for all-nan data on matplotlib 3.6.1 · Issue #24127 · matplotlib/matplotlib
X Title: [Bug]: ax.bar raises for all-nan data on matplotlib 3.6.1 · Issue #24127 · matplotlib/matplotlib
Description: Bug summary ax.bar raises an exception in 3.6.1 when passed only nan data. This irrevocably breaks seaborn's histogram function (which draws and then removes a "phantom" bar to trip the color cycle). Code for reproduction import numpy as...
Open Graph Description: Bug summary ax.bar raises an exception in 3.6.1 when passed only nan data. This irrevocably breaks seaborn's histogram function (which draws and then removes a "phantom" bar to trip the color cycle...
X Description: Bug summary ax.bar raises an exception in 3.6.1 when passed only nan data. This irrevocably breaks seaborn's histogram function (which draws and then removes a "phantom" bar to trip t...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/24127
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: ax.bar raises for all-nan data on matplotlib 3.6.1 ","articleBody":"### Bug summary\n\n`ax.bar` raises an exception in 3.6.1 when passed only nan data. This irrevocably breaks seaborn's histogram function (which draws and then removes a \"phantom\" bar to trip the color cycle).\n\n### Code for reproduction\n\n```python\nimport numpy as np\r\nimport matplotlib.pyplot as plt\r\nf, ax = plt.subplots()\r\nax.bar([np.nan], [np.nan])\n```\n\n\n### Actual outcome\n\n```python-traceback\r\n---------------------------------------------------------------------------\r\nStopIteration Traceback (most recent call last)\r\nCell In [1], line 4\r\n 2 import matplotlib.pyplot as plt\r\n 3 f, ax = plt.subplots()\r\n----\u003e 4 ax.bar([np.nan], [np.nan])[0].get_x()\r\n\r\nFile ~/miniconda/envs/py310/lib/python3.10/site-packages/matplotlib/__init__.py:1423, in _preprocess_data.\u003clocals\u003e.inner(ax, data, *args, **kwargs)\r\n 1420 @functools.wraps(func)\r\n 1421 def inner(ax, *args, data=None, **kwargs):\r\n 1422 if data is None:\r\n-\u003e 1423 return func(ax, *map(sanitize_sequence, args), **kwargs)\r\n 1425 bound = new_sig.bind(ax, *args, **kwargs)\r\n 1426 auto_label = (bound.arguments.get(label_namer)\r\n 1427 or bound.kwargs.get(label_namer))\r\n\r\nFile ~/miniconda/envs/py310/lib/python3.10/site-packages/matplotlib/axes/_axes.py:2373, in Axes.bar(self, x, height, width, bottom, align, **kwargs)\r\n 2371 x0 = x\r\n 2372 x = np.asarray(self.convert_xunits(x))\r\n-\u003e 2373 width = self._convert_dx(width, x0, x, self.convert_xunits)\r\n 2374 if xerr is not None:\r\n 2375 xerr = self._convert_dx(xerr, x0, x, self.convert_xunits)\r\n\r\nFile ~/miniconda/envs/py310/lib/python3.10/site-packages/matplotlib/axes/_axes.py:2182, in Axes._convert_dx(dx, x0, xconv, convert)\r\n 2170 try:\r\n 2171 # attempt to add the width to x0; this works for\r\n 2172 # datetime+timedelta, for instance\r\n (...)\r\n 2179 # removes the units from unit packages like `pint` that\r\n 2180 # wrap numpy arrays.\r\n 2181 try:\r\n-\u003e 2182 x0 = cbook._safe_first_finite(x0)\r\n 2183 except (TypeError, IndexError, KeyError):\r\n 2184 pass\r\n\r\nFile ~/miniconda/envs/py310/lib/python3.10/site-packages/matplotlib/cbook/__init__.py:1749, in _safe_first_finite(obj, skip_nonfinite)\r\n 1746 raise RuntimeError(\"matplotlib does not \"\r\n 1747 \"support generators as input\")\r\n 1748 else:\r\n-\u003e 1749 return next(val for val in obj if safe_isfinite(val))\r\n\r\nStopIteration: \r\n```\n\n### Expected outcome\n\nOn 3.6.0 this returns a `BarCollection` with one Rectangle, having `nan` for `x` and `height`.\n\n### Additional information\n\nI assume it's related to this bullet in the release notes:\r\n\r\n- Fix barplot being empty when first element is NaN\r\n\r\nBut I don't know the context for it to investigate further (could these link to PRs?)\r\n\r\nFurther debugging:\r\n\r\n```python\r\nax.bar([np.nan], [0]) # Raises\r\nax.bar([0], [np.nan]) # Works\r\n```\r\n\r\nSo it's about the x position specifically.\n\n### Operating system\n\nMacos\n\n### Matplotlib Version\n\n3.6.1\n\n### Matplotlib Backend\n\n_No response_\n\n### Python version\n\n_No response_\n\n### Jupyter version\n\n_No response_\n\n### Installation\n\npip","author":{"url":"https://github.com/mwaskom","@type":"Person","name":"mwaskom"},"datePublished":"2022-10-08T12:04:30.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":8},"url":"https://github.com/24127/matplotlib/issues/24127"}
| 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:d85496d7-2fa9-3673-03f7-fd20de0705a9 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D17C:6435C:AA3F90A:EE0D5B0:6A50ECB5 |
| html-safe-nonce | b0c0c57215d66035c6398844ed0acba2cdf7993041c31c7fab30422541e576d6 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMTdDOjY0MzVDOkFBM0Y5MEE6RUUwRDVCMDo2QTUwRUNCNSIsInZpc2l0b3JfaWQiOiI1MTA0MzA4OTg5NDIxNzQzMjg1IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | bf8836f27384195a4b7988ccd1934caf4fa70c16a20bb9723a4393582c1f2fa8 |
| hovercard-subject-tag | issue:1401925305 |
| 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/24127/issue_layout |
| twitter:image | https://opengraph.githubassets.com/1330570aa8424466378b227c8460bae9a8927ed80cabb697f3ed3762cbb2ee1b/matplotlib/matplotlib/issues/24127 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/1330570aa8424466378b227c8460bae9a8927ed80cabb697f3ed3762cbb2ee1b/matplotlib/matplotlib/issues/24127 |
| og:image:alt | Bug summary ax.bar raises an exception in 3.6.1 when passed only nan data. This irrevocably breaks seaborn's histogram function (which draws and then removes a "phantom" bar to trip the color cycle... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mwaskom |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5266e58c17a510c403505cc811606465e90a881d2007ee7df1c4800d5c659838 |
| 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 | 5ec60191a48933536a90c8a19f47142fcd0d4739 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width