Title: Qualitative colormaps re-map discrete color values · Issue #21786 · matplotlib/matplotlib · GitHub
Open Graph Title: Qualitative colormaps re-map discrete color values · Issue #21786 · matplotlib/matplotlib
X Title: Qualitative colormaps re-map discrete color values · Issue #21786 · matplotlib/matplotlib
Description: Bug summary When I started using qualitative color maps, I expected to be able to pass integers into the c argument of plt.scatter() like keys in a dictionary, basically. Integer in, color out, same relationship every time. Instead, the ...
Open Graph Description: Bug summary When I started using qualitative color maps, I expected to be able to pass integers into the c argument of plt.scatter() like keys in a dictionary, basically. Integer in, color out, sam...
X Description: Bug summary When I started using qualitative color maps, I expected to be able to pass integers into the c argument of plt.scatter() like keys in a dictionary, basically. Integer in, color out, sam...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/21786
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Qualitative colormaps re-map discrete color values","articleBody":"### Bug summary\n\nWhen I started using qualitative color maps, I expected to be able to pass integers into the `c` argument of `plt.scatter()` like keys in a dictionary, basically. Integer in, color out, same relationship every time. Instead, the values get remapped based on min/max, same as quantitative colormaps. I think this is kind of silly: the whole point of a qualitative color map is that you can pick distinct values and pass them in to represent some kind of category, without worrying about the scale of the numbers. Indeed, this could even be misleading: if you pass in, say, color values (integers) ranging from 1-20 to the Set1 colormap, it will group some of them to be the same color, when imo it should raise an error and tell you that you picked a colormap that doesn't have enough colors.\r\n\r\nI suspect I'm opening up a can of worms here, but a quick search didn't reveal any prior discussion, so figured I'd ask.\r\n\r\nAlso: I do realize that I can get the desired behavior by passing in actual rgb values for each point. But it took me a while to figure out why the heck the above strategy wasn't working, and I want to save everyone else that time!\r\n\r\n\n\n### Code for reproduction\n\n```python\nimport matplotlib.pyplot as plt\r\nimport numpy as np\r\n\r\nx = np.arange(3)\r\ny = x\r\nc = np.array([0,1,2])\r\nplt.subplot(121)\r\nplt.scatter(x,y,c=c, cmap='Set1') # weird\r\nplt.subplot(122)\r\nplt.scatter(x,y,c=c, cmap='Set1', vmin=0, vmax=8) # the expected behavior\n```\n\n\n### Actual outcome\n\n\r\n\n\n### Expected outcome\n\nSee above\n\n### Additional information\n\n_No response_\n\n### Operating system\n\nOSX\n\n### Matplotlib Version\n\n3.4.3\n\n### Matplotlib Backend\n\nmodule://matplotlib_inline.backend_inline\n\n### Python version\n\n3.9.7\n\n### Jupyter version\n\n6.4.6\n\n### Installation\n\nconda","author":{"url":"https://github.com/jonahpearl","@type":"Person","name":"jonahpearl"},"datePublished":"2021-11-28T21:52:31.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/21786/matplotlib/issues/21786"}
| 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:0a1d210a-fef5-8df1-58ec-ef7525b70239 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CE5E:2CFC95:32A582E:44F32EE:6A53EB92 |
| html-safe-nonce | d0345bdaae369b35dc56cf1a3eed6ef34b6ed41d638597dc34aece335aef55d0 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRTVFOjJDRkM5NTozMkE1ODJFOjQ0RjMyRUU6NkE1M0VCOTIiLCJ2aXNpdG9yX2lkIjoiODkzMDkyNjQ4Mjc5ODQwNjU0NiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | e8867cb6fc73f6460238b97aa904b1a643b43d10acf97be2e63ee54deca8c7f8 |
| hovercard-subject-tag | issue:1065446168 |
| 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/21786/issue_layout |
| twitter:image | https://opengraph.githubassets.com/de063e4e9feebc593e834796ddd95e807cceebb9ef8ed784197f1b233d1558b7/matplotlib/matplotlib/issues/21786 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/de063e4e9feebc593e834796ddd95e807cceebb9ef8ed784197f1b233d1558b7/matplotlib/matplotlib/issues/21786 |
| og:image:alt | Bug summary When I started using qualitative color maps, I expected to be able to pass integers into the c argument of plt.scatter() like keys in a dictionary, basically. Integer in, color out, sam... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | jonahpearl |
| 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