Title: [Bug]: LinearSegmentedColormap.from_list cannot process list with two colors · Issue #27126 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: LinearSegmentedColormap.from_list cannot process list with two colors · Issue #27126 · matplotlib/matplotlib
X Title: [Bug]: LinearSegmentedColormap.from_list cannot process list with two colors · Issue #27126 · matplotlib/matplotlib
Description: Bug summary I use LinearSegmentedColormap.from_list to create custom colormaps. A very simple one, which just assigns two RGB values to the two end points, does not work any more after update to matplotlib 3.8.0. Code for reproduction fr...
Open Graph Description: Bug summary I use LinearSegmentedColormap.from_list to create custom colormaps. A very simple one, which just assigns two RGB values to the two end points, does not work any more after update to ma...
X Description: Bug summary I use LinearSegmentedColormap.from_list to create custom colormaps. A very simple one, which just assigns two RGB values to the two end points, does not work any more after update to ma...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/27126
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: LinearSegmentedColormap.from_list cannot process list with two colors","articleBody":"### Bug summary\n\nI use `LinearSegmentedColormap.from_list` to create custom colormaps. A very simple one, which just assigns two RGB values to the two end points, does not work any more after update to matplotlib 3.8.0.\n\n### Code for reproduction\n\n```python\nfrom matplotlib import colors\r\nval_col = [(0.0, (0.95, 0.0, 0.0)), (1.0, (0.95, 0.95, 0.95))]\r\ncm = colors.LinearSegmentedColormap.from_list('test', val_col)\n```\n\n\n### Actual outcome\n\n```\r\nFile ~/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/colors.py:1067, in LinearSegmentedColormap.from_list(name, colors, N, gamma)\r\n 1063 vals = np.linspace(0, 1, len(colors))\r\n 1065 r, g, b, a = to_rgba_array(colors).T\r\n 1066 cdict = {\r\n-\u003e 1067 \"red\": np.column_stack([vals, r, r]),\r\n 1068 \"green\": np.column_stack([vals, g, g]),\r\n 1069 \"blue\": np.column_stack([vals, b, b]),\r\n 1070 \"alpha\": np.column_stack([vals, a, a]),\r\n 1071 }\r\n 1073 return LinearSegmentedColormap(name, cdict, N, gamma)\r\n\r\nFile ~/packages/macports/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/numpy/lib/shape_base.py:652, in column_stack(tup)\r\n 650 arr = array(arr, copy=False, subok=True, ndmin=2).T\r\n 651 arrays.append(arr)\r\n--\u003e 652 return _nx.concatenate(arrays, 1)\r\n\r\nValueError: all the input array dimensions except for the concatenation axis must match exactly, but along dimension 0, the array at index 0 has size 2 and the array at index 1 has size 3\r\n```\n\n### Expected outcome\n\nThis should construct a new colormap going smoothly from red to white. This used to work until I recently updated matplotlib to 3.8.0.\n\n### Additional information\n\nThe issue seems to be that the routine `to_rgba_array` takes a length-2 object and returns r, g and b that are all length 3. Specifically, the line\r\n\r\n```python\r\nr, g, b, a = to_rgba_array(colors).T\r\n```\r\n\r\ntakes `colors`, which is `((0.95, 0.0, 0.0), (0.95, 0.95, 0.95))`, and returns `r` as `[0.95 0.95 0.95]`, and so on. It's obvious that `np.column_stack([vals, r, r])` should fail in that case, because `vals` is length 2, and `r` is length 3. This used to work in an earlier version of matplotlib, so I suppose `to_rgba_array` has changed recently.\n\n### Operating system\n\nOS/X\n\n### Matplotlib Version\n\n3.8.0\n\n### Matplotlib Backend\n\nMacOSX\n\n### Python version\n\n3.11.6\n\n### Jupyter version\n\n_No response_\n\n### Installation\n\nLinux package manager","author":{"url":"https://github.com/AgilentGCMS","@type":"Person","name":"AgilentGCMS"},"datePublished":"2023-10-17T17:44:13.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/27126/matplotlib/issues/27126"}
| 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:aa0654e3-bad9-ce9f-7478-c51ea9138bdb |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | AB64:147377:6B0204:8EAD31:6A51D3AE |
| html-safe-nonce | 37feb5608bda99f18b6ac5a420b50ba8552324b4973a67a54693d1b3b564085c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQjY0OjE0NzM3Nzo2QjAyMDQ6OEVBRDMxOjZBNTFEM0FFIiwidmlzaXRvcl9pZCI6IjUxODYwOTc1Mjc2NTM1MjAzMDIiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 60dc5ddb9fb09faecb1de5dd9bb5c4742b77f2c86a2cadea2ba01ee6465e5d39 |
| hovercard-subject-tag | issue:1947937213 |
| 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/27126/issue_layout |
| twitter:image | https://opengraph.githubassets.com/971e19cf90709d372e268b012b52755c5c7dc81f232ede327041e8153f03b85e/matplotlib/matplotlib/issues/27126 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/971e19cf90709d372e268b012b52755c5c7dc81f232ede327041e8153f03b85e/matplotlib/matplotlib/issues/27126 |
| og:image:alt | Bug summary I use LinearSegmentedColormap.from_list to create custom colormaps. A very simple one, which just assigns two RGB values to the two end points, does not work any more after update to ma... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | AgilentGCMS |
| 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 | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width