Title: Animation freezes in Jupyter notebook · Issue #18580 · matplotlib/matplotlib · GitHub
Open Graph Title: Animation freezes in Jupyter notebook · Issue #18580 · matplotlib/matplotlib
X Title: Animation freezes in Jupyter notebook · Issue #18580 · matplotlib/matplotlib
Description: Bug report Bug summary A FuncAnimation in a Jupyter notebook runs through once but freezes when it should repeat. Code for reproduction %matplotlib notebook import matplotlib as mpl from matplotlib import pyplot as plt import numpy as np...
Open Graph Description: Bug report Bug summary A FuncAnimation in a Jupyter notebook runs through once but freezes when it should repeat. Code for reproduction %matplotlib notebook import matplotlib as mpl from matplotlib...
X Description: Bug report Bug summary A FuncAnimation in a Jupyter notebook runs through once but freezes when it should repeat. Code for reproduction %matplotlib notebook import matplotlib as mpl from matplotlib...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/18580
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Animation freezes in Jupyter notebook","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**Bug summary**\r\n\r\nA `FuncAnimation` in a Jupyter notebook runs through once but freezes when it should repeat.\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\n%matplotlib notebook\r\nimport matplotlib as mpl\r\nfrom matplotlib import pyplot as plt\r\nimport numpy as np\r\n\r\nfig = plt.figure()\r\nnt = 25\r\n\r\nt = np.linspace(0,1,nt)\r\nf = np.sin(2.*np.pi*t)\r\n\r\nax = plt.axes(xlim=[0,1],ylim=[-1,1])\r\nline = ax.plot(t[:1], f[:1])[0]\r\n\r\ndef update_func(i):\r\n line.set_xdata(t[:i])\r\n line.set_ydata(f[:i])\r\n \r\nanim = mpl.animation.FuncAnimation(fig, update_func, nt, repeat=True)\r\n```\r\n\r\nPassing `repeat_delay=1` to `FuncAnimation` on the last line prevents the error. It looks like having `repeat_delay=0` sets `TimerTornado.interval` to `0`, but `tornado.ioloop.PeriodicCallback` requires a *positive* value for `interval`.\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\nThis error appears in the console when the animation crashes.\r\n```\r\nERROR:tornado.application:Exception in callback \u003cbound method TimerBase._on_timer of \u003cmatplotlib.backends.backend_webagg_core.TimerTornado object at 0x7f8627585610\u003e\u003e\r\nTraceback (most recent call last):\r\n File \".../site-packages/tornado/ioloop.py\", line 907, in _run\r\n return self.callback()\r\n File \".../site-packages/matplotlib/backend_bases.py\", line 1194, in _on_timer\r\n ret = func(*args, **kwargs)\r\n File \".../site-packages/matplotlib/animation.py\", line 1432, in _step\r\n self.event_source.interval = self._repeat_delay\r\n File \".../site-packages/matplotlib/backend_bases.py\", line 1135, in interval\r\n self._timer_set_interval()\r\n File \".../site-packages/matplotlib/backends/backend_webagg_core.py\", line 537, in _timer_set_interval\r\n self._timer_start()\r\n File \".../site-packages/matplotlib/backends/backend_webagg_core.py\", line 518, in _timer_start\r\n self._timer = tornado.ioloop.PeriodicCallback(\r\n File \".../site-packages/tornado/ioloop.py\", line 873, in __init__\r\n raise ValueError(\"Periodic callback must have a positive callback_time\")\r\nValueError: Periodic callback must have a positive callback_time\r\n\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\nThe animation plays continuously.\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 19\r\n * Matplotlib version: 3.3.2\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): nbAgg\r\n * Python version: 3.8.5\r\n * Jupyter version (if applicable): 6.1.4\r\n * Other libraries: \r\n * IPython: 7.18.1\r\n * tornado: 6.0.4\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\nInstalled all packages from conda, using conda-forge","author":{"url":"https://github.com/johnomotani","@type":"Person","name":"johnomotani"},"datePublished":"2020-09-25T22:18:38.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/18580/matplotlib/issues/18580"}
| 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:00dae345-ae59-f95d-98d9-adac536b745e |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A7A2:300650:2BFE2B:3B65FA:6A568DFF |
| html-safe-nonce | 037c9eac41a85d140084f26cf4e14dcc296857672b8d9e4c3dee5f0a0976edfa |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBN0EyOjMwMDY1MDoyQkZFMkI6M0I2NUZBOjZBNTY4REZGIiwidmlzaXRvcl9pZCI6IjgzNTcwNjYzNDE3ODI4MTgzMDMiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | d6a61247e160815ca60ec41c7bc0d160c11db3dacb266425d39ea05950093bbf |
| hovercard-subject-tag | issue:709317149 |
| 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/18580/issue_layout |
| twitter:image | https://opengraph.githubassets.com/34f0cda729f7d98eb3b635fd8c8ac6aed2493f0c77bc70cba5b2ddf53c7d16c3/matplotlib/matplotlib/issues/18580 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/34f0cda729f7d98eb3b635fd8c8ac6aed2493f0c77bc70cba5b2ddf53c7d16c3/matplotlib/matplotlib/issues/18580 |
| og:image:alt | Bug report Bug summary A FuncAnimation in a Jupyter notebook runs through once but freezes when it should repeat. Code for reproduction %matplotlib notebook import matplotlib as mpl from matplotlib... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | johnomotani |
| hostname | github.com |
| expected-hostname | github.com |
| None | 8f21be8503ba8fe6154df415b855c03af52eae3f285bd6ae1fef041dc053da38 |
| 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 | 78af172a48a2056810bb627ffa684003e4f9a5ca |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width