Title: Stale information drawn by nbAgg · Issue #19116 · matplotlib/matplotlib · GitHub
Open Graph Title: Stale information drawn by nbAgg · Issue #19116 · matplotlib/matplotlib
X Title: Stale information drawn by nbAgg · Issue #19116 · matplotlib/matplotlib
Description: Bug report This is a follow up to the glitching noted in #19059. Bug summary If you are not forcing a full frontend redraw and are sending messages to the frontend fast enough then there can be artifacts left in the plot. Code for reprod...
Open Graph Description: Bug report This is a follow up to the glitching noted in #19059. Bug summary If you are not forcing a full frontend redraw and are sending messages to the frontend fast enough then there can be art...
X Description: Bug report This is a follow up to the glitching noted in #19059. Bug summary If you are not forcing a full frontend redraw and are sending messages to the frontend fast enough then there can be art...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/19116
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Stale information drawn by nbAgg","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\nThis is a follow up to the glitching noted in https://github.com/matplotlib/matplotlib/pull/19059.\r\n\r\n**Bug summary**\r\nIf you are not forcing a full frontend redraw and are sending messages to the frontend fast enough then there can be artifacts left in the plot. \r\n\u003c!--A short 1-2 sentences that succinctly describes the bug--\u003e\r\n\r\n**Code for reproduction**\r\n```python\r\nimport itertools\r\n\r\ncnt = itertools.count()\r\nbg = None\r\n\r\ndef onclick_handle(event):\r\n \"\"\"Should draw elevating green line on each mouse click\"\"\"\r\n global bg\r\n if bg is None:\r\n bg = ax.figure.canvas.copy_from_bbox(ax.bbox) \r\n ax.figure.canvas.restore_region(bg)\r\n\r\n cur_y = (next(cnt) % 10) * 0.1\r\n ln.set_ydata([cur_y, cur_y])\r\n ax.draw_artist(ln)\r\n ax.figure.canvas.blit(ax.bbox)\r\n\r\n\r\nfig, ax = plt.subplots()\r\nax.plot([0, 1], [0, 1], 'r')\r\nln, = ax.plot([0, 1], [0, 0], 'g', animated=True)\r\nplt.show()\r\nax.figure.canvas.draw()\r\n\r\nax.figure.canvas.mpl_connect('button_press_event', onclick_handle)\r\n```\r\n\r\n**Actual outcome**\r\n\r\n\r\n**Expected outcome**\r\nOnly one green line should be ever be present.\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:\r\n * Matplotlib version: Master\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): nbAgg or ipympl\r\n * Python version: \r\n * Jupyter version (if applicable): Jupyterlab 2.2.9\r\n\r\n\r\nIn https://github.com/matplotlib/matplotlib/pull/19059#issuecomment-737707430 @tacaswell noted the following:\r\n\r\n\u003e @danielballan has also noticed this form of glitching in ipympl and is interested in fixing it. I agree the issue is that via some mechanism one or more of the diff frames are being lost or processed out of order. We either need to make the front ends smart enough to detect this (by tacking a frame number on to everything and verifying that that they come in order) or on the kernel side force a non-diff every N frame (aka key-frames analogous to the way that mpeg works internally).\r\n","author":{"url":"https://github.com/ianhi","@type":"Person","name":"ianhi"},"datePublished":"2020-12-15T05:10:49.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":30},"url":"https://github.com/19116/matplotlib/issues/19116"}
| 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:f98600c8-103f-c5d2-9350-8dc326ec7425 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 97E6:1D428F:549B9E:729395:6A51CBCD |
| html-safe-nonce | 18ad953fcffbe22235d19de3e2fa1efd6991d6e9f1cf81592825283336dcb660 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5N0U2OjFENDI4Rjo1NDlCOUU6NzI5Mzk1OjZBNTFDQkNEIiwidmlzaXRvcl9pZCI6IjgwODAyNDA0NTI0MjE0MDU2NDUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 93c6a16574cbdddda12deb42acf466b7c44d7248ee235a61edf243f0490950ae |
| hovercard-subject-tag | issue:767183382 |
| 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/19116/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2f41c67a552db74a6e3f417112c5448d2fc3830ce4ffa8a61a6c356d86b4ce96/matplotlib/matplotlib/issues/19116 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2f41c67a552db74a6e3f417112c5448d2fc3830ce4ffa8a61a6c356d86b4ce96/matplotlib/matplotlib/issues/19116 |
| og:image:alt | Bug report This is a follow up to the glitching noted in #19059. Bug summary If you are not forcing a full frontend redraw and are sending messages to the frontend fast enough then there can be art... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | ianhi |
| 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 | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width