Title: scatter() behavior with different size inputs depends on the backend but both variants are inconsistent with the docs · Issue #12021 · matplotlib/matplotlib · GitHub
Open Graph Title: scatter() behavior with different size inputs depends on the backend but both variants are inconsistent with the docs · Issue #12021 · matplotlib/matplotlib
X Title: scatter() behavior with different size inputs depends on the backend but both variants are inconsistent with the docs · Issue #12021 · matplotlib/matplotlib
Description: scatter()'s docstring states Parameters ---------- x, y : array_like, shape (n, ) The data positions. s : scalar or array_like, shape (n, ), optional The marker size in points**2. Default is ``rcParams['lines.markersize'] ** 2``. c : col...
Open Graph Description: scatter()'s docstring states Parameters ---------- x, y : array_like, shape (n, ) The data positions. s : scalar or array_like, shape (n, ), optional The marker size in points**2. Default is ``rcPa...
X Description: scatter()'s docstring states Parameters ---------- x, y : array_like, shape (n, ) The data positions. s : scalar or array_like, shape (n, ), optional The marker size in points**2. Default is ``...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/12021
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"scatter() behavior with different size inputs depends on the backend but both variants are inconsistent with the docs","articleBody":"scatter()'s docstring states\r\n```\r\n Parameters\r\n ----------\r\n x, y : array_like, shape (n, )\r\n The data positions.\r\n \r\n s : scalar or array_like, shape (n, ), optional\r\n The marker size in points**2.\r\n Default is ``rcParams['lines.markersize'] ** 2``.\r\n \r\n c : color, sequence, or sequence of color, optional, default: 'b'\r\n The marker color. Possible values:\r\n \r\n - A single color format string.\r\n - A sequence of color specifications of length n.\r\n - A sequence of n numbers to be mapped to colors using *cmap* and\r\n *norm*.\r\n - A 2-D array in which the rows are RGB or RGBA.\r\n \r\n Note that *c* should not be a single numeric RGB or RGBA sequence\r\n because that is indistinguishable from an array of values to be\r\n colormapped. If you want to specify the same RGB or RGBA value for\r\n all points, use a 2-D array with a single row.\r\n```\r\ni.e. `s` must have the same size as `x`/`y` (`n`) and `c` too, or `c` can have size 1 as well. But this is not the case: `x`, `y`, `c`, and `s` are \"cycled over\" until covering the longest of them, as can be shown by\r\n```\r\nscatter([0, 1], [0, 1], [100, 200, 300], alpha=.5)\r\n```\r\n(plots a second point of size 300 over (0, 0) -- but *only* for vector backends; for agg, the size=300 point is dropped)\r\nor\r\n```\r\nscatter([0, 1, 2, 3], [0, 1, 2, 3], c=[\"r\", \"g\", \"b\"])\r\n```\r\n(reuses \"r\" for the last point).\r\n\r\nThe difference between vector and raster backends comes from _backend_agg.h using `size_t N = std::max(Npaths, Noffsets);` (so not taking the size of `s` (i.e. `transforms`) into account), whereas the vector backends ultimately rely on backend_bases' _iter_collection_raw_paths, which uses `N = max(Npaths, Ntransforms)` and then _iter_collection, which has `N = max(Npaths, Noffsets)` (so all three are taken into account).\r\n\r\nObviously this behavior goes down what semantics we want for draw_path_collection (... having had to figure it out myself for mplcairo), but I think *at least* that cycling the positions when the sizes or colors are longer is misguided and would be hiding a bug most of the time (indeed, I initially missed the fact that the example in #12010 plotted 4e6 points (at 2e3 positions, each of them overlayed 2e3 times), not 2e3, due to the size of `s`).\r\n\r\nI can imagine wanting to cycle over a *shorter* `c` or `s`, not that I particularly like it as it can also hide bugs.\r\n\r\nIf we really don't want to change anything, then the docstring should be updated.\r\n\r\nmpl master/3.0rc and probably since a long time ago.","author":{"url":"https://github.com/anntzer","@type":"Person","name":"anntzer"},"datePublished":"2018-09-05T09:18:46.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/12021/matplotlib/issues/12021"}
| 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:e4ef58fb-6f43-4dba-71e7-c205f3dfc530 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C380:11E4FC:BC31D4:FFF93C:6A555AD7 |
| html-safe-nonce | dac1a2e1d72976d7c9b97bf8a1fc1bc26afc9d580898d657704c5b48a3e7bde5 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMzgwOjExRTRGQzpCQzMxRDQ6RkZGOTNDOjZBNTU1QUQ3IiwidmlzaXRvcl9pZCI6IjQwMzMzNTkzNzk0OTU3MzgwNzIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | b01dbf3b4f508cad1b3054cb566ddfe5d0eb7c47fe8e56107dfd5c892e8ba729 |
| hovercard-subject-tag | issue:357138542 |
| 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/12021/issue_layout |
| twitter:image | https://opengraph.githubassets.com/802e54f01a26ccf8fce02e3464085cde3f5930e2a6d373a3fd4b0f77e2fde759/matplotlib/matplotlib/issues/12021 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/802e54f01a26ccf8fce02e3464085cde3f5930e2a6d373a3fd4b0f77e2fde759/matplotlib/matplotlib/issues/12021 |
| og:image:alt | scatter()'s docstring states Parameters ---------- x, y : array_like, shape (n, ) The data positions. s : scalar or array_like, shape (n, ), optional The marker size in points**2. Default is ``rcPa... |
| 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 | b5665c84831ed9ac4fb79519c16c9c5580ba8092fb8bb6e3e72972ec7197348e |
| 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 | 73595e82546ca2415571a2031890ab16ecb3001a |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width