Title: ValueError: cannot convert float NaN to integer · Issue #15093 · matplotlib/matplotlib · GitHub
Open Graph Title: ValueError: cannot convert float NaN to integer · Issue #15093 · matplotlib/matplotlib
X Title: ValueError: cannot convert float NaN to integer · Issue #15093 · matplotlib/matplotlib
Description: Bug report Bug summary Code for reproduction import matplotlib import matplotlib.pyplot as plt import numpy as np plt.rcParams['figure.figsize'] = 10,10 class MidpointNormalize(matplotlib.colors.Normalize): def __init__(self, vmin=None, ...
Open Graph Description: Bug report Bug summary Code for reproduction import matplotlib import matplotlib.pyplot as plt import numpy as np plt.rcParams['figure.figsize'] = 10,10 class MidpointNormalize(matplotlib.colors.No...
X Description: Bug report Bug summary Code for reproduction import matplotlib import matplotlib.pyplot as plt import numpy as np plt.rcParams['figure.figsize'] = 10,10 class MidpointNormalize(matplotlib.c...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/15093
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"ValueError: cannot convert float NaN to integer","articleBody":"### Bug report\r\n\r\n**Bug summary**\r\n\r\n\u003c!--A short 1-2 sentences that succinctly describes the bug--\u003e\r\n\r\n**Code for reproduction**\r\n\r\n```python\r\nimport matplotlib\r\nimport matplotlib.pyplot as plt\r\nimport numpy as np\r\n\r\nplt.rcParams['figure.figsize'] = 10,10\r\n\r\nclass MidpointNormalize(matplotlib.colors.Normalize):\r\n def __init__(self, vmin=None, vmax=None, midpoint=None, clip=False):\r\n self.midpoint = midpoint\r\n matplotlib.colors.Normalize.__init__(self, vmin, vmax, clip)\r\n\r\n def __call__(self, value, clip=None):\r\n # Note that I'm ignoring clipping and other edge cases here.\r\n result, is_scalar = self.process_value(value)\r\n x, y = [self.vmin, self.midpoint, self.vmax], [0, 0.5, 1]\r\n return np.ma.array(np.interp(value, x, y), mask=result.mask, copy=False)\r\n\r\n# make these smaller to increase the resolution\r\ndx, dy = 0.15, 0.05\r\n\r\n# generate 2 2d grids for the x \u0026 y bounds\r\ny, x = np.mgrid[slice(-3, 3 + dy, dy),\r\n slice(-3, 3 + dx, dx)]\r\nz = (1 - x / 2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)\r\n\r\nz = z[:-1, :-1]\r\nz_min, z_max = -np.abs(z).max(), np.abs(z).max()\r\nz [0:2,0:2] = np.nan\r\n\r\nplt.pcolormesh(x, y, z, cmap='seismic',norm=MidpointNormalize(midpoint=0.,vmin=-3,vmax=3))\r\nplt.title('pcolormesh')\r\nplt.axis([x.min(), x.max(), y.min(), y.max()])\r\nplt.colorbar(extend='min')\r\n\r\nplt.tight_layout(w_pad=0.1, h_pad=1)\r\nplt.savefig('test.png', dpi = 720)\r\n```\r\n\r\n**Actual outcome**\r\n\r\n\u003c!--The output produced by the above code, which may be a screenshot, console output, etc.--\u003e\r\n\r\n```\r\nE:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\colorbar.py:1042: RuntimeWarning: invalid value encountered in true_divide\r\n z = np.take(y, i0) + (xn - np.take(b, i0)) * dy / db\r\nE:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\transforms.py:402: RuntimeWarning: invalid value encountered in double_scalars\r\n return points[1, 0] - points[0, 0]\r\nTraceback (most recent call last):\r\n File \"C:\\Users\\Xin\\Desktop\\test_extend.py\", line 37, in \u003cmodule\u003e\r\n plt.savefig('test.png', dpi = 720)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\pyplot.py\", line 689, in savefig\r\n res = fig.savefig(*args, **kwargs)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\figure.py\", line 2094, in savefig\r\n self.canvas.print_figure(fname, **kwargs)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\backend_bases.py\", line 2075, in print_figure\r\n **kwargs)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py\", line 510, in print_png\r\n FigureCanvasAgg.draw(self)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\backends\\backend_agg.py\", line 402, in draw\r\n self.figure.draw(self.renderer)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\artist.py\", line 50, in draw_wrapper\r\n return draw(artist, renderer, *args, **kwargs)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\figure.py\", line 1649, in draw\r\n renderer, self, artists, self.suppressComposite)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\image.py\", line 138, in _draw_list_compositing_images\r\n a.draw(renderer)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\artist.py\", line 50, in draw_wrapper\r\n return draw(artist, renderer, *args, **kwargs)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\axes\\_base.py\", line 2628, in draw\r\n mimage._draw_list_compositing_images(renderer, self, artists)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\image.py\", line 138, in _draw_list_compositing_images\r\n a.draw(renderer)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\artist.py\", line 50, in draw_wrapper\r\n return draw(artist, renderer, *args, **kwargs)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\axis.py\", line 1185, in draw\r\n ticks_to_draw = self._update_ticks(renderer)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\axis.py\", line 1023, in _update_ticks\r\n tick_tups = list(self.iter_ticks()) # iter_ticks calls the locator\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\axis.py\", line 967, in iter_ticks\r\n majorLocs = self.major.locator()\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\ticker.py\", line 1985, in __call__\r\n return self.tick_values(vmin, vmax)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\ticker.py\", line 1993, in tick_values\r\n locs = self._raw_ticks(vmin, vmax)\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\ticker.py\", line 1932, in _raw_ticks\r\n nbins = np.clip(self.axis.get_tick_space(),\r\n File \"E:\\miniconda3\\envs\\satpy\\lib\\site-packages\\matplotlib\\axis.py\", line 2159, in get_tick_space\r\n return int(np.floor(length / size))\r\nValueError: cannot convert float NaN to integer\r\n```\r\n\r\n**Expected outcome**\r\n\r\n\r\n\r\n**Tmp solution**\r\nAdd the min and max of z to `vmin` and `vmax`:\r\n```\r\nplt.pcolormesh(x, y, z, vmin=z_min, vmax=z_max, cmap='seismic',norm=MidpointNormalize(midpoint=0.,vmin=-3,vmax=3))\r\n```\r\n\r\nHowever, it doesn't work if the vmin or vmax is beyond that:\r\n```\r\nplt.pcolormesh(x, y, z, vmin=-2, vmax=z_max, cmap='seismic',norm=MidpointNormalize(midpoint=0.,vmin=-3,vmax=3))\r\n```\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: Win 10\r\n * Matplotlib version: 3.0.3 (conda-forge)\r\n * Matplotlib backend: TkAgg\r\n * Python version: 3.6.7","author":{"url":"https://github.com/zxdawn","@type":"Person","name":"zxdawn"},"datePublished":"2019-08-21T10:01:29.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/15093/matplotlib/issues/15093"}
| 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:b81e4812-dabe-d072-2207-aa59d592d314 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 90BE:2D0EDC:91F283:D3D05D:6A549BE8 |
| html-safe-nonce | 816d35b780df6076eacec5980c03a302c5482629640d48f0abbbc26ff0ab5787 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MEJFOjJEMEVEQzo5MUYyODM6RDNEMDVEOjZBNTQ5QkU4IiwidmlzaXRvcl9pZCI6IjI2MjI4MDkzNDY4Nzk1NjA2ODAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 04ae10c15854ef7c0023ac03894ae07244cfc157374e383515704f2d2f8d228f |
| hovercard-subject-tag | issue:483324166 |
| 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/15093/issue_layout |
| twitter:image | https://opengraph.githubassets.com/9572b3073f01503477040e84229eedc59c1a5d8ddbfe9d447beae0e084bddfbb/matplotlib/matplotlib/issues/15093 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9572b3073f01503477040e84229eedc59c1a5d8ddbfe9d447beae0e084bddfbb/matplotlib/matplotlib/issues/15093 |
| og:image:alt | Bug report Bug summary Code for reproduction import matplotlib import matplotlib.pyplot as plt import numpy as np plt.rcParams['figure.figsize'] = 10,10 class MidpointNormalize(matplotlib.colors.No... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | zxdawn |
| 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 | f8cfff6384f62259baea531c7f58bc7040f8dd92 |
| ui-target | canary-2 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width