Title: NonUniformImage does not respond to ax.set_scale('log') · Issue #13442 · matplotlib/matplotlib · GitHub
Open Graph Title: NonUniformImage does not respond to ax.set_scale('log') · Issue #13442 · matplotlib/matplotlib
X Title: NonUniformImage does not respond to ax.set_scale('log') · Issue #13442 · matplotlib/matplotlib
Description: Bug report Bug summary An image displayed with NonUniformImage does not respond to scaling the axis with ax.set_xscale('log'), other than changing the axis, not the image itself. Code for reproduction import numpy as np import matplotlib...
Open Graph Description: Bug report Bug summary An image displayed with NonUniformImage does not respond to scaling the axis with ax.set_xscale('log'), other than changing the axis, not the image itself. Code for reproduct...
X Description: Bug report Bug summary An image displayed with NonUniformImage does not respond to scaling the axis with ax.set_xscale('log'), other than changing the axis, not the image itself. Code for r...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/13442
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"NonUniformImage does not respond to ax.set_scale('log')","articleBody":"### Bug report\r\n\r\n**Bug summary**\r\n\r\nAn image displayed with NonUniformImage does not respond to scaling the axis with `ax.set_xscale('log')`, other than changing the axis, not the image itself.\r\n\r\n**Code for reproduction**\r\n\r\n```python\r\nimport numpy as np\r\nimport matplotlib.pyplot as plt \r\nfrom matplotlib.image import NonUniformImage\r\n\r\n# Linear x array for cell centers:\r\nx = np.linspace(1, 10, 10) \r\n\r\n# Highly nonlinear x array:\r\nx2 = x**3\r\n\r\n# Linear y-array\r\ny = np.linspace(1, 10, 10) \r\nz = np.sqrt(x[np.newaxis, :]**2 + y[:, np.newaxis]**2)\r\n\r\n\r\nfig, axs = plt.subplots(nrows=2, ncols=2)\r\nfig.subplots_adjust(bottom=0.07, hspace=0.3)\r\n\r\n# Uniform Grid, linear x-axis\r\nax = axs[0, 0]\r\nim = ax.imshow(z, extent=(1, 10, 1, 10), aspect='auto',origin='lower')\r\nax.set_title(\"Uniform Grid, linear x-axis\")\r\n\r\n# Uniform Grid, log x-axis (image changes)\r\nax = axs[0, 1]\r\nim = ax.imshow(z, extent=(1, 10, 1, 10),aspect='auto',origin='lower')\r\nax.set_xscale('log')\r\nax.set_title('Uniform Grid, log x-axis')\r\n\r\n# Correct ticklabel formatting\r\nfrom matplotlib.ticker import StrMethodFormatter, NullFormatter\r\nax.xaxis.set_major_formatter(StrMethodFormatter('{x:.0f}'))\r\nax.xaxis.set_minor_formatter(NullFormatter())\r\n\r\n# NonUniform Grid, linear x-axis\r\nax = axs[1, 0]\r\nim = NonUniformImage(ax, interpolation='nearest', extent=(1, 1000, 1, 10))\r\nim.set_data(x2, y, z)\r\nax.images.append(im)\r\nax.set_xlim(1, 1000)\r\nax.set_ylim(1, 10) \r\nax.set_title('NonUniform Grid, lin x-axis')\r\n\r\n# NonUniform Grid, logarithmic x-axis (this doesn't work as intended)\r\nax = axs[1, 1]\r\nim = NonUniformImage(ax, interpolation='nearest', extent=(1, 1000, 1, 10))\r\nim.set_data(x2, y, z)\r\nax.images.append(im)\r\nax.set_xlim(1, 1000)\r\nax.set_ylim(1, 10) \r\nax.set_xscale('log')\r\nax.set_title('NonUniform Grid, log x-axis')\r\n\r\nplt.show()\r\n```\r\n\r\n**Actual outcome**\r\n\r\n\r\n\r\n\r\n**Expected outcome**\r\n\r\nThe bottom panels are made using NonUniformImage. I expected a change similar to the top two panels (made with imshow) when setting `ax.set_xscale('log')`, however as can be seen in the bottom two panels, the image does not change from the left to the right hand side, only the axis.\r\n\r\nThe issue is briefly discussed [in this link](https://stackoverflow.com/questions/54713236/nonuniformimage-with-nonlinear-axes-in-matplotlib-in-python), and suggested by stackoverflow user Aaron to originate from the following:\r\n\r\n\u003e Basically the problem is that the image is rendered using square coords which are not transformed by the axis transformation, then the bounding box is linearly scaled to axes coords so the data lines up (if the axes coords are also linear). In this case the lack of a second transform misaligns the data. This could be considered a bug that mpl.image._ImageBase does not query the axes transforms for the purpose of aligning all the data, only the bounding box...\r\n\r\n**Matplotlib version**\r\n * Operating system: OS X 10.14 \r\n * Matplotlib version: 3.0.2\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): Qt5Agg\r\n * Python version: Python 3.7.1\r\n\r\nPython installed via default conda channel\r\n","author":{"url":"https://github.com/jacobsvensmark","@type":"Person","name":"jacobsvensmark"},"datePublished":"2019-02-15T17:22:31.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":9},"url":"https://github.com/13442/matplotlib/issues/13442"}
| 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:fe247891-029d-7063-f386-0795abb3dc88 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D26A:4342D:1171505:1732AB0:6A529B94 |
| html-safe-nonce | d7a969e65846e4c34dda9615f2b0c97ba8963dee992c0e74e3059add9a8b0489 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMjZBOjQzNDJEOjExNzE1MDU6MTczMkFCMDo2QTUyOUI5NCIsInZpc2l0b3JfaWQiOiI0NzMwMzY3MzY1NDQyODcwMTY1IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 4fb4233494df3b739dbb99001049ec27a46efa7ffecbcc006e433f336f708fbc |
| hovercard-subject-tag | issue:410868220 |
| 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/13442/issue_layout |
| twitter:image | https://opengraph.githubassets.com/858c4cb1d4dbff2eb93f7a857b6d48cb24dc6d02aa3e5169430cda53440ca1bf/matplotlib/matplotlib/issues/13442 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/858c4cb1d4dbff2eb93f7a857b6d48cb24dc6d02aa3e5169430cda53440ca1bf/matplotlib/matplotlib/issues/13442 |
| og:image:alt | Bug report Bug summary An image displayed with NonUniformImage does not respond to scaling the axis with ax.set_xscale('log'), other than changing the axis, not the image itself. Code for reproduct... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | jacobsvensmark |
| 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