Title: scatter() should not drop data points at nonfinite coordinates · Issue #12801 · matplotlib/matplotlib · GitHub
Open Graph Title: scatter() should not drop data points at nonfinite coordinates · Issue #12801 · matplotlib/matplotlib
X Title: scatter() should not drop data points at nonfinite coordinates · Issue #12801 · matplotlib/matplotlib
Description: Currently, scatter() completely drops data points at nonfinite coordinates from the PathCollection it builds: fig, ax = plt.subplots() x = [0, 1, np.nan, 3] y = [0, 1, 2, 3] c = [0, 1, 2, 3] pc = ax.scatter(x, y, c=c) print(pc.get_offset...
Open Graph Description: Currently, scatter() completely drops data points at nonfinite coordinates from the PathCollection it builds: fig, ax = plt.subplots() x = [0, 1, np.nan, 3] y = [0, 1, 2, 3] c = [0, 1, 2, 3] pc = a...
X Description: Currently, scatter() completely drops data points at nonfinite coordinates from the PathCollection it builds: fig, ax = plt.subplots() x = [0, 1, np.nan, 3] y = [0, 1, 2, 3] c = [0, 1, 2, 3] pc = a...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/12801
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"scatter() should not drop data points at nonfinite coordinates","articleBody":"Currently, scatter() completely drops data points at nonfinite coordinates from the PathCollection it builds:\r\n```\r\nfig, ax = plt.subplots()\r\nx = [0, 1, np.nan, 3]\r\ny = [0, 1, 2, 3]\r\nc = [0, 1, 2, 3]\r\npc = ax.scatter(x, y, c=c)\r\nprint(pc.get_offsets())\r\n```\r\nresults in\r\n```\r\n[[0. 0.]\r\n [1. 1.]\r\n [3. 3.]]\r\n```\r\ni.e. the [2, nan] point is not recorded anywhere, even though **we could just as well keep track of it and let the *renderer* do the job of not rendering nonfinite points**.\r\n\r\nAs a result, this makes event picking less-than-optimal: adding\r\n```\r\nfig.canvas.mpl_connect(\"button_press_event\", lambda event: print(pc.contains(event)))\r\n```\r\nto the code above, one sees that the first point is picked at index 0 (`(True, {'ind': array([0], dtype=int32)})` is printed when clicking on it), the second one at index 1, and the last one at index 2. So one cannot use the resulting index to lookup into `x`/`y`/`c`, one has to index into `pc.get_offsets()`/`pc.get_array()`; and if one wants to index into some *other* array (my actual use case), one needs to manually count the nans in `x`/`y`/`c` and do the index conversion.\r\nAs a comparison point, `Line2D` does keep invalid points around and lets the renderer kill them.\r\n\r\nLikewise, points with nonfinite values are dropped:\r\n```\r\npc = ax.scatter([0, 1, 2, 3], [0, 1, 2, 3], c=[0, np.nan, np.inf, 1])\r\n```\r\nresults in behavior similar to the one described above.\r\nIn this specific case, I actually think nonfinite points should respect the colormap's colors set by `set_under`/`set_over`/`set_bad` (right now they don't, they are again wiped out of existence) -- after all that's exactly what these \"extra\" colors are for.\r\n\r\nThis second issue (invalid `c`) has already been reported elsewhere and there are already PRs for it: #4354/#9891/#12422.\r\n\r\nmpl master/3.0.2\r\nArch Linux/Py3.7","author":{"url":"https://github.com/anntzer","@type":"Person","name":"anntzer"},"datePublished":"2018-11-12T22:31:53.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/12801/matplotlib/issues/12801"}
| 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:633171c6-2be6-a8ea-4c6e-42a9c5f3154e |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BBDA:2D523B:29338DB:385B848:6A53BE05 |
| html-safe-nonce | 5a064abb110798c8653d02803946113eeff92383dade04351615da22c7dcddc7 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQkRBOjJENTIzQjoyOTMzOERCOjM4NUI4NDg6NkE1M0JFMDUiLCJ2aXNpdG9yX2lkIjoiNzI2MzI3NjcyNzEzNjQwMjk0OSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | c982b45f602e484da3fc202ab690caa74336a64d8662e716b490d69c11c6603e |
| hovercard-subject-tag | issue:379978715 |
| 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/12801/issue_layout |
| twitter:image | https://opengraph.githubassets.com/60e04152f2d208371d933d0de2147db599d0a8479297a34f9d801b14a43d9427/matplotlib/matplotlib/issues/12801 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/60e04152f2d208371d933d0de2147db599d0a8479297a34f9d801b14a43d9427/matplotlib/matplotlib/issues/12801 |
| og:image:alt | Currently, scatter() completely drops data points at nonfinite coordinates from the PathCollection it builds: fig, ax = plt.subplots() x = [0, 1, np.nan, 3] y = [0, 1, 2, 3] c = [0, 1, 2, 3] pc = a... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | anntzer |
| 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