issue_comments
1 row where issue = 1368027148 and user = 13662783 sorted by updated_at descending
This data as json, CSV (advanced)
Suggested facets: created_at (date), updated_at (date)
issue 1
- xarray imshow and pcolormesh behave badly when the array does not contain values larger the BoundaryNorm vmax · 1 ✖
id | html_url | issue_url | node_id | user | created_at | updated_at ▲ | author_association | body | reactions | performed_via_github_app | issue |
---|---|---|---|---|---|---|---|---|---|---|---|
1412027546 | https://github.com/pydata/xarray/issues/7014#issuecomment-1412027546 | https://api.github.com/repos/pydata/xarray/issues/7014 | IC_kwDOAMm_X85UKdSa | Huite 13662783 | 2023-02-01T13:06:09Z | 2023-02-01T13:06:45Z | CONTRIBUTOR | Debugging this, @headtr1ck points correctly to _determine_cmap_params:
The problem lies in the second line. In What then happens, is that the norm calls into the cmap. Calling into cmap doesn't do any checks whether the value is larger than N, it just takes the highest available value. The examples in #4061 show this quite clearly, but to illustrate: ```python import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np data = np.arange(100).reshape((10, 10)) cmap = mpl.cm.get_cmap("viridis") print(cmap.N) # 256 boundaries = [0, 25, 50, 75, 100] norm = mpl.colors.BoundaryNorm(boundaries, cmap.N) fig, ax = plt.subplots() ax.imshow(data, norm=norm, cmap=cmap) %%colors = [cmap(i/255) for i in np.linspace(0, cmap.N, len(boundaries) - 1)] new_cmap, new_norm = mpl.colors.from_levels_and_colors(boundaries, colors) print(new_cmap.N) # 4 fig, ax = plt.subplots() ax.imshow(data, norm=new_norm, cmap=new_cmap) %%Mismatchedfig, ax = plt.subplots() ax.imshow(data, norm=norm, cmap=new_cmap) %%``` This is avoided here by removing the conditional in the second line, or just making sure both cmap and norm are replaced by their new values:
Then, the cmap and norm remain in sync. However, when running the tests in ```python def test_norm_sets_vmin_vmax(self) -> None: vmin = self.data.min() vmax = self.data.max()
I don't understand why the conditional is there. At first sight, it doesn't make a lot of sense to create a new norm and cmap, but then take the original norm? |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
xarray imshow and pcolormesh behave badly when the array does not contain values larger the BoundaryNorm vmax 1368027148 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [performed_via_github_app] TEXT, [issue] INTEGER REFERENCES [issues]([id]) ); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
user 1