Title: Add pause/resume methods to Animation baseclass · Issue #17689 · matplotlib/matplotlib · GitHub
Open Graph Title: Add pause/resume methods to Animation baseclass · Issue #17689 · matplotlib/matplotlib
X Title: Add pause/resume methods to Animation baseclass · Issue #17689 · matplotlib/matplotlib
Description: As pointed out in #17685 while you can pause an animation by reaching in and calling methods on the event source, when using Animation with blitting that is not enough, you also have to flip the animated artists back to non-animated. Thi...
Open Graph Description: As pointed out in #17685 while you can pause an animation by reaching in and calling methods on the event source, when using Animation with blitting that is not enough, you also have to flip the an...
X Description: As pointed out in #17685 while you can pause an animation by reaching in and calling methods on the event source, when using Animation with blitting that is not enough, you also have to flip the an...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/17689
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Add pause/resume methods to Animation baseclass","articleBody":"\r\nAs pointed out in https://github.com/matplotlib/matplotlib/issues/17685 while you can pause an animation by reaching in and calling methods on the event source, when using `Animation` with blitting that is not enough, you also have to flip the animated artists back to non-animated. This code (lightly modified from @Luluser question) is a proof-of-concept.\r\n\r\n```python\r\nimport numpy as np\r\nimport matplotlib.pyplot as plt\r\nimport matplotlib.animation as animation\r\nfrom matplotlib.widgets import Button\r\n\r\n\r\nclass PlotAnimation:\r\n def __init__(self):\r\n self.fig, self.ax = plt.subplots()\r\n self.x = np.linspace(-10, 10, 1000)\r\n self.N = 200\r\n self.interv = 50\r\n self.n0 = (\r\n 1.0\r\n / (4 * np.pi * 2e-4 * 0.1) ** 0.5\r\n * np.exp(-self.x ** 2 / (4 * 2e-4 * 0.1))\r\n )\r\n (self.p,) = self.ax.plot(self.x, self.n0)\r\n self.anim_running = True\r\n self.Myanimation = animation.FuncAnimation(\r\n self.fig, self.update, frames=self.N, interval=self.interv, blit=True\r\n )\r\n\r\n def update(self, i):\r\n self.n0 += i / 100 % 5\r\n self.p.set_ydata(self.n0 % 20)\r\n return (self.p,)\r\n\r\n def animate(self):\r\n pause_ax = self.fig.add_axes((0.7, 0.025, 0.1, 0.04))\r\n pause_button = Button(pause_ax, \"pause\", hovercolor=\"0.975\")\r\n pause_button.on_clicked(self._pause)\r\n plt.show()\r\n\r\n def _pause(self, event):\r\n if self.anim_running:\r\n self.Myanimation.event_source.stop()\r\n self.p.set_animated(False)\r\n self.anim_running = False\r\n self.fig.canvas.draw_idle()\r\n else:\r\n self.p.set_animated(True)\r\n self.Myanimation.event_source.start()\r\n self.anim_running = True\r\n\r\n\r\nanimated_plot = PlotAnimation()\r\nanimated_plot.animate()\r\n```\r\n\r\nThis code should be generalized and used to put a `pause` and `resume` methods on `Animation`.\r\n","author":{"url":"https://github.com/tacaswell","@type":"Person","name":"tacaswell"},"datePublished":"2020-06-19T19:56:58.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":13},"url":"https://github.com/17689/matplotlib/issues/17689"}
| 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:320d2b90-a6c7-d195-106f-8725fa60a46e |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E2CE:25F5DD:165BDD:1D7CCD:6A5271F7 |
| html-safe-nonce | 528acee30ff4efe1c3e0b74d1bbb052061d9926931e97997f6d000b395da10c3 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFMkNFOjI1RjVERDoxNjVCREQ6MUQ3Q0NEOjZBNTI3MUY3IiwidmlzaXRvcl9pZCI6Ijc3ODgwOTk0Nzg0ODE5NTczNjciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 2073ce3bd2bfcc64f03e7bd4ca79cd32c6a5a2009f3624c7b19fdc8181b443ce |
| hovercard-subject-tag | issue:642190132 |
| 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/17689/issue_layout |
| twitter:image | https://opengraph.githubassets.com/77df791bde9c58c999ebebd5435210844ff5c9d8d0f16227bb6ec306f823a7ed/matplotlib/matplotlib/issues/17689 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/77df791bde9c58c999ebebd5435210844ff5c9d8d0f16227bb6ec306f823a7ed/matplotlib/matplotlib/issues/17689 |
| og:image:alt | As pointed out in #17685 while you can pause an animation by reaching in and calling methods on the event source, when using Animation with blitting that is not enough, you also have to flip the an... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | tacaswell |
| 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