Title: 2.1 change - Axis Limit Error · Issue #9361 · matplotlib/matplotlib · GitHub
Open Graph Title: 2.1 change - Axis Limit Error · Issue #9361 · matplotlib/matplotlib
X Title: 2.1 change - Axis Limit Error · Issue #9361 · matplotlib/matplotlib
Description: Bug report The new feature of raising exceptions for invalid limits and related changes seem to break code Some new features in dealing with limits seem to break plotting, when using very small values (or NaN). I was not able to track do...
Open Graph Description: Bug report The new feature of raising exceptions for invalid limits and related changes seem to break code Some new features in dealing with limits seem to break plotting, when using very small val...
X Description: Bug report The new feature of raising exceptions for invalid limits and related changes seem to break code Some new features in dealing with limits seem to break plotting, when using very small val...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/9361
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"2.1 change - Axis Limit Error ","articleBody":"\u003c!--To help us understand and resolve your issue, please fill out the form to the best of your ability.--\u003e\r\n\u003c!--You can feel free to delete the sections that do not apply.--\u003e\r\n\r\n### Bug report\r\n\r\n**The new feature of raising exceptions for invalid limits and related changes seem to break code**\r\n\r\n\u003c!--A short 1-2 sentences that succinctly describes the bug--\u003e\r\n\r\n**Some new features in dealing with limits seem to break plotting, when using very small values (or NaN). I was not able to track down what is all broken, may be one than just one isolated change ... this worked smoothly in 2.0.2**\r\n\r\n\u003c!--A minimum code snippet required to reproduce the bug, also minimizing the number of dependencies required--\u003e\r\n\r\n```python3\r\nimport numpy as np\r\nfrom matplotlib.pyplot import *\r\nx = np.arange(-1000,10,1)\r\ny = 10.**x\r\nplot(x,y)\r\nyscale('log')\r\nylim(1e-10, 1e10)\r\nshow()\r\n```\r\n\u003c!--The output produced by the above code, which may be a screenshot, console output, etc.--\u003e\r\n\r\nif you now zoom out in \"pan\" mode eventually you run into error messages of the kind\r\n\r\n```\r\nValueError: Axis limits cannot be NaN or Inf\r\nTraceback (most recent call last):\r\n File \"/home/alex/Python/lib/python3.6/site-packages/matplotlib/cbook/__init__.py\", line 389, in process\r\n proxy(*args, **kwargs)\r\n File \"/home/alex/Python/lib/python3.6/site-packages/matplotlib/cbook/__init__.py\", line 227, in __call__\r\n return mtd(*args, **kwargs)\r\n File \"/home/alex/Python/lib/python3.6/site-packages/matplotlib/backend_bases.py\", line 3056, in drag_pan\r\n a.drag_pan(self._button_pressed, event.key, event.x, event.y)\r\n File \"/home/alex/Python/lib/python3.6/site-packages/matplotlib/axes/_base.py\", line 3837, in drag_pan\r\n self.set_ylim(*result.intervaly)\r\n File \"/home/alex/Python/lib/python3.6/site-packages/matplotlib/axes/_base.py\", line 3226, in set_ylim\r\n top = self._validate_converted_limits(top, self.convert_yunits)\r\n File \"/home/alex/Python/lib/python3.6/site-packages/matplotlib/axes/_base.py\", line 2836, in _validate_converted_limits\r\n raise ValueError(\"Axis limits cannot be NaN or Inf\")\r\nValueError: Axis limits cannot be NaN or Inf\r\n```\r\nand it all get very slow, I see the `hour glass` cursor for a line with 1000 points.\r\n\r\nIf you have a more complex plot with anything after this error these parts may be missing. Plot limits for axis get mutilated as well. I have also seen cases where `home` button no longer gets you back to the original limits ... For example, try to bus down really, really far (below 1e-300). After doing that, press `home`. For my test case, this showed me limits somewhere from 1e-50 to 1e+38. (in mpl 2.0.2 this does not happen)\r\n\r\n\r\n**Expected outcome**\r\n\r\n\u003c!--A description of the expected outcome from the code snippet--\u003e\r\n\u003c!--If this used to work in an earlier version of Matplotlib, please note the version it used to work on--\u003e\r\n\r\nIn Maplotlib 2.0.2, no error occurs, all runs smoothly. Values below threshold are truncated. Many of the plots I had are completely mutilated in this new version, I do not even know where I can start to look for a fix, as the errors do not point to any part of my code, nor is there an error raised in interactive mode where I could debug it. So it is not clear to me how I can help to find the problem in Matplotlib, or adjust my code from a 2.0.2-compatible version to one that works with 2.1.0.\r\n\r\n(In 2.0.2 I only see a message as below.) \r\n```\r\n/home/alex/Python/lib/python3.6/site-packages/matplotlib/ticker.py:1076: RuntimeWarning: divide by zero encountered in double_scalars\r\n coeff = np.round(x / b ** exponent)\r\n```\r\n\r\n**proposed fix**\r\n\r\nplease revert to previous way of handling limits etc.\r\n\r\nI assume this is related to \r\n```\r\nInvalid (Non-finite) Axis Limit Error\r\nWhen using set_xlim() and set_ylim(), passing non-finite values now results in a ValueError. The previous behavior resulted in the limits being erroneously reset to (-0.001, 0.001).\r\n```\r\nfrom \r\nhttp://matplotlib.org/api/api_changes.html#api-changes-in-2-1-0\r\nspecifically\r\nhttp://matplotlib.org/api/api_changes.html#invalid-non-finite-axis-limit-error\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: Fedora 26, 64bit\r\n * Matplotlib version: 2.1\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): TkAgg\r\n * Python version: 3.6.3\r\n * Jupyter version (if applicable): N/A\r\n * Other libraries: numpy 1.13.3\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\npip3","author":{"url":"https://github.com/2sn","@type":"Person","name":"2sn"},"datePublished":"2017-10-11T06:04:55.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/9361/matplotlib/issues/9361"}
| 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:e164af89-47b0-955f-329d-62c93ffc77a2 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D2B4:1CCBDE:7ECD6B:AA05DB:6A53081B |
| html-safe-nonce | f7628a4c3502a7b192619bd685a0c98ddc7b88ff52b5a7d45cf51dd31d758012 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMkI0OjFDQ0JERTo3RUNENkI6QUEwNURCOjZBNTMwODFCIiwidmlzaXRvcl9pZCI6IjIwNTA3NjE5NjU1MzA0NDk5NDciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 49c46f61689bd918585bf712d3ac5b6d99daead812b0e2f2f0e437bc484ed066 |
| hovercard-subject-tag | issue:264466705 |
| 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/9361/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d322f11f171b824791f6e85f132024d48392af473fa2532f824109f1ebc3a94a/matplotlib/matplotlib/issues/9361 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d322f11f171b824791f6e85f132024d48392af473fa2532f824109f1ebc3a94a/matplotlib/matplotlib/issues/9361 |
| og:image:alt | Bug report The new feature of raising exceptions for invalid limits and related changes seem to break code Some new features in dealing with limits seem to break plotting, when using very small val... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | 2sn |
| 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