Title: [Bug]: matplotlib==3.5.2 breaks ipywidgets · Issue #23229 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: matplotlib==3.5.2 breaks ipywidgets · Issue #23229 · matplotlib/matplotlib
X Title: [Bug]: matplotlib==3.5.2 breaks ipywidgets · Issue #23229 · matplotlib/matplotlib
Description: Bug summary After updating matplotlib to 3.5.2 (from 3.5.1) the display/updating of widgets created with ipywidgets is broken, at least for certain types of plots. Update of print statements in response to moving the widgets works fine b...
Open Graph Description: Bug summary After updating matplotlib to 3.5.2 (from 3.5.1) the display/updating of widgets created with ipywidgets is broken, at least for certain types of plots. Update of print statements in res...
X Description: Bug summary After updating matplotlib to 3.5.2 (from 3.5.1) the display/updating of widgets created with ipywidgets is broken, at least for certain types of plots. Update of print statements in res...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/23229
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: matplotlib==3.5.2 breaks ipywidgets","articleBody":"### Bug summary\r\n\r\nAfter updating matplotlib to 3.5.2 (from 3.5.1) the display/updating of widgets created with ipywidgets is broken, at least for certain types of plots.\r\nUpdate of print statements in response to moving the widgets works fine but the plot is not modified.\r\n\r\nTo reproduce:\r\n- dump the following into `requirements.txt`:\r\n\r\n\u003e ipykernel\r\n\u003e jupyterlab-widgets\r\n\u003e ipywidgets\r\n\u003e numpy\r\n\u003e ipympl\r\n\u003e matplotlib==3.5.2\r\n\r\n- `conda create python=3.7 --name myenv \u0026 conda activate myenv \u0026 pip install -r requirements.txt`\r\n- Run the code below in jupyter\r\n\r\n\r\n### Code for reproduction\r\n\r\n```python\r\nfrom IPython.display import display\r\nfrom ipywidgets import (\r\n FloatSlider,\r\n HBox,\r\n VBox,\r\n Layout,\r\n fixed,\r\n interactive_output,\r\n)\r\n\r\nclass MiniRaster:\r\n def __init__(\r\n self,\r\n ):\r\n self._trains = [\r\n np.linspace(0, 10, 100), \r\n np.linspace(0, 10, 1000)\r\n ]\r\n\r\n def _interact(self, ax, linewidth, xmax):\r\n if ax is None:\r\n fig, ax = plt.subplots()\r\n ax.cla()\r\n ax.eventplot(\r\n self._trains,\r\n linewidth=linewidth\r\n )\r\n plt.xlim(0, xmax)\r\n\r\n print('linewidth = ', linewidth)\r\n print('xmax = ', xmax)\r\n return ax\r\n\r\n def interact(self):\r\n fig, ax = plt.subplots()\r\n\r\n linewidth_slider = FloatSlider(\r\n min=0,\r\n max=10,\r\n step=1,\r\n value=1,\r\n description=\"width=\",\r\n continuous_update=False,\r\n layout=Layout(width=\"95%\"),\r\n )\r\n\r\n xmax_slider = FloatSlider(\r\n min=1,\r\n max=20,\r\n step=1,\r\n value=10,\r\n description=\"xmax=\",\r\n continuous_update=False,\r\n layout=Layout(width=\"95%\"),\r\n )\r\n\r\n ui = VBox([linewidth_slider, xmax_slider])\r\n\r\n out = interactive_output(\r\n # return interactive_output(\r\n self._interact,\r\n {\r\n \"ax\": fixed(ax),\r\n \"linewidth\": linewidth_slider,\r\n \"xmax\": xmax_slider\r\n },\r\n )\r\n display(ui, out)\r\n\r\nraster = MiniRaster()\r\n\r\n%matplotlib widget\r\nraster.interact()\r\n```\r\n\r\n\r\n### Actual outcome\r\n\r\n\r\nPrint statements follow the widgets, not the figure\r\n\r\n### Expected outcome\r\n\r\nWhen pinning matplotlib version to 3.5.1, both the print statement and the figure follow the widgets\r\n\r\n\r\n\r\n\r\n### Additional information\r\n\r\nThis doesn't happen for all types of figures/widgets. \r\nI'm at a loss as to why, but this snippet works fine for me for both versions\r\n\r\n```\r\nimport ipywidgets as widgets\r\n\r\nm = widgets.FloatSlider(min=-5,max=5,step=0.5, description=\"Slope\")\r\nc = widgets.FloatSlider(min=-5,max=5,step=0.5, description=\"Intercept\")\r\n\r\n# An HBox lays out its children horizontally\r\nui = widgets.HBox([m, c])\r\n\r\ndef plot(m, c):\r\n x = np.random.rand(10)\r\n y = m *x + c\r\n plt.cla()\r\n plt.plot(x,y)\r\n plt.show()\r\n\r\nout = widgets.interactive_output(plot, {'m': m, 'c': c})\r\n\r\ndisplay(out, ui)\r\n```\r\n\r\nI had the same behavior on python3.7 and 3.10, and on VSCode jupyter and jupyter notebook.\r\n\r\nconda == 4.11.0\r\n\r\n### Operating system\r\n\r\nUbuntu\r\n\r\n### Matplotlib Version\r\n\r\n3.5.2\r\n\r\n### Matplotlib Backend\r\n\r\nmodule://ipympl.backend_nbagg\r\n\r\n### Python version\r\n\r\n3.10.4\r\n\r\n### Jupyter version\r\n\r\n6.4.12\r\n\r\n### Installation\r\n\r\npip","author":{"url":"https://github.com/TomBugnon","@type":"Person","name":"TomBugnon"},"datePublished":"2022-06-09T18:39:23.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/23229/matplotlib/issues/23229"}
| 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:f705f5d1-657f-d1d0-b4ad-79c0bc6b168c |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A4C6:299504:B35A82:F19A3C:6A531917 |
| html-safe-nonce | 842e705647b53a606dc21301952dbe826bf3a2de85864dcaaa3b0fe6a1c2525d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNEM2OjI5OTUwNDpCMzVBODI6RjE5QTNDOjZBNTMxOTE3IiwidmlzaXRvcl9pZCI6IjY1MzQ3MDc3OTY3ODQ2NTA1MTkiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 3c060ec4c9ea867a0fc263c013735ffd85d9a496b2a7e2c00e7efbec29cc2bf8 |
| hovercard-subject-tag | issue:1266516061 |
| 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/23229/issue_layout |
| twitter:image | https://opengraph.githubassets.com/08424eeffba52bd5997a3774ada620d5f33d37330afc4f1c20312f12c499c270/matplotlib/matplotlib/issues/23229 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/08424eeffba52bd5997a3774ada620d5f33d37330afc4f1c20312f12c499c270/matplotlib/matplotlib/issues/23229 |
| og:image:alt | Bug summary After updating matplotlib to 3.5.2 (from 3.5.1) the display/updating of widgets created with ipywidgets is broken, at least for certain types of plots. Update of print statements in res... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | TomBugnon |
| 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