Title: pcolormesh: shading='nearest' and non-monotonic coordinates · Issue #18317 · matplotlib/matplotlib · GitHub
Open Graph Title: pcolormesh: shading='nearest' and non-monotonic coordinates · Issue #18317 · matplotlib/matplotlib
X Title: pcolormesh: shading='nearest' and non-monotonic coordinates · Issue #18317 · matplotlib/matplotlib
Description: Bug report Bug summary #16258 deprecates shading="flat" when data and coordinates have the same shape and introduces shading="nearest" which interpolates the coordinates. However, the logic to interpolate the coordinates breaks down if t...
Open Graph Description: Bug report Bug summary #16258 deprecates shading="flat" when data and coordinates have the same shape and introduces shading="nearest" which interpolates the coordinates. However, the logic to inte...
X Description: Bug report Bug summary #16258 deprecates shading="flat" when data and coordinates have the same shape and introduces shading="nearest" which interpolates the coordinates. Howeve...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/18317
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"pcolormesh: shading='nearest' and non-monotonic coordinates","articleBody":"# Bug report\r\n\r\n**Bug summary**\r\n\r\n#16258 deprecates `shading=\"flat\"` when data and coordinates have the same shape and introduces `shading=\"nearest\"` which interpolates the coordinates. However, the logic to interpolate the coordinates breaks down if they are not monotonically increasing.\r\n\r\nhttps://github.com/matplotlib/matplotlib/blob/85117715a154d1027c6e204d2ee581fa787f423d/lib/matplotlib/axes/_axes.py#L5684\r\n\r\nOf course non-monotonic coordinates are a bit exotic but they make sense for geographic data.\r\n\r\n**Code for reproduction**\r\n\r\n\u003c!--A minimum code snippet required to reproduce the bug.\r\nPlease make sure to minimize the number of dependencies required, and provide\r\nany necessary plotted data.\r\nAvoid using threads, as Matplotlib is (explicitly) not thread-safe.--\u003e\r\n\r\n```python\r\nimport numpy as np\r\n\r\ndef _interp_grid(X):\r\n # helper for below\r\n if np.shape(X)[1] \u003e 1:\r\n dX = np.diff(X, axis=1)/2.\r\n X = np.hstack((X[:, [0]] - dX[:, [0]],\r\n X[:, :-1] + dX,\r\n X[:, [-1]] + dX[:, [-1]]))\r\n return X\r\n\r\nx = np.array([1, 2, 0])\r\ny = np.array([1, 2])\r\n\r\nX, Y = np.meshgrid(x, y)\r\n\r\n_interp_grid(X)\r\n```\r\n\r\n**Actual outcome**\r\n\r\nResults in\r\n```python\r\narray([[ 0.5, 1.5, 1. , -1. ],\r\n [ 0.5, 1.5, 1. , -1. ]])\r\n```\r\n\r\nWhile having cooridinates `[1, 2, 0]` may seem just as wrong as coordinates `[0.5, 1.5, 1, -1]` the latter can cause some real-world problems in conjunction with cartopy (scitools/cartopy#1638):\r\n\r\n\r\n\r\n\r\n**Expected outcome**\r\n\r\n* A warning for non-monotonic data\r\n* A convenient option to restore the old behaviour, e.g. `shading=\"drop\"`\r\n\r\ncc @greglucas\r\n\r\n**Matplotlib version**\r\n\u003c!--Please specify your platform and versions of the relevant libraries you are using:--\u003e\r\n * Operating system: Linux Mint\r\n * Matplotlib version: '3.3.1'\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): TkAgg\r\n * Python version: 3.8\r\n * Jupyter version (if applicable):\r\n * Other libraries: \r\n\r\n\u003c!--Please tell us how you installed matplotlib and python e.g., from source, pip, conda--\u003e\r\n\u003c!--If you installed from conda, please specify which channel you used if not the default--\u003e\r\n\r\n","author":{"url":"https://github.com/mathause","@type":"Person","name":"mathause"},"datePublished":"2020-08-21T19:00:45.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":18},"url":"https://github.com/18317/matplotlib/issues/18317"}
| 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:6bfd2251-ad1d-1491-94d6-0fd8ff85cd6d |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B33E:12115C:4144DFA:5C16896:6A56E61A |
| html-safe-nonce | de707fe5115ee85f1be05d80f869fe033bd924a5bd9f9308fdee6e85993f92c6 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMzNFOjEyMTE1Qzo0MTQ0REZBOjVDMTY4OTY6NkE1NkU2MUEiLCJ2aXNpdG9yX2lkIjoiNjgyMjcyNzU0Nzc0MDQxNTUxNCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 334ffeb9be07793cef9a0fd5cbaba2a92d00cc52a045e4102474468ed1344c84 |
| hovercard-subject-tag | issue:683768639 |
| 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/18317/issue_layout |
| twitter:image | https://opengraph.githubassets.com/fb3a9d68cecefc98bba8d20032444e3ded419dced40df76fb169150676d4c1b9/matplotlib/matplotlib/issues/18317 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/fb3a9d68cecefc98bba8d20032444e3ded419dced40df76fb169150676d4c1b9/matplotlib/matplotlib/issues/18317 |
| og:image:alt | Bug report Bug summary #16258 deprecates shading="flat" when data and coordinates have the same shape and introduces shading="nearest" which interpolates the coordinates. However, the logic to inte... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mathause |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5220a278731283038daf0ed00b41f06ef7ff9539020ecc806c5c5a0fb6bda25a |
| 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 | 8684ae1a81cd3e4ef219b241179982bbda1a5b1f |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width