Title: [Bug]: matplotlib.pyplot.clf is very slow · Issue #23771 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: matplotlib.pyplot.clf is very slow · Issue #23771 · matplotlib/matplotlib
X Title: [Bug]: matplotlib.pyplot.clf is very slow · Issue #23771 · matplotlib/matplotlib
Description: Bug summary For relatively simple plotting examples the plt.clf() command can take over 30% of the calculation time. One would expect that a clear command is relatively simple and takes a limited amount of time Code for reproduction impo...
Open Graph Description: Bug summary For relatively simple plotting examples the plt.clf() command can take over 30% of the calculation time. One would expect that a clear command is relatively simple and takes a limited a...
X Description: Bug summary For relatively simple plotting examples the plt.clf() command can take over 30% of the calculation time. One would expect that a clear command is relatively simple and takes a limited a...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/23771
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: matplotlib.pyplot.clf is very slow","articleBody":"### Bug summary\n\nFor relatively simple plotting examples the `plt.clf()` command can take over 30% of the calculation time. One would expect that a clear command is relatively simple and takes a limited amount of time\n\n### Code for reproduction\n\n```python\nimport numpy as np\r\nimport time\r\nimport matplotlib\r\nimport matplotlib.pyplot as plt\r\nprint(matplotlib.__version__)\r\n\r\ndef profile_expression(expression):\r\n import cProfile \r\n import tempfile\r\n import os\r\n import subprocess\r\n tmpdir = tempfile.mkdtemp()\r\n statsfile = os.path.join(tmpdir, \"profile_expression_stats\")\r\n print(\"profile_expression: running\")\r\n t0 = time.perf_counter()\r\n cProfile.run(expression, statsfile)\r\n dt = time.perf_counter() - t0\r\n print(f\"profiling: {dt:.2f} [s]\")\r\n r = subprocess.Popen([\"snakeviz\", statsfile])\r\n return r\r\n\r\nx=np.linspace(0, 10, 1000)\r\ny=np.linspace(0, 20, 1000)**0.1\r\n\r\ndef go():\r\n for ii in range(5):\r\n plt.figure(100); \r\n plt.clf()\r\n plt.plot(x, y, '.', label='n')\r\n plt.plot(x, y+x, '.-', label='m')\r\n plt.xlabel('dsf')\r\n plt.title('sdfs')\r\n plt.legend()\r\n plt.draw()\r\n\r\nif __name__=='__main__':\r\n profile_expression('go()')\n```\n\n\n### Actual outcome\n\nThe output of the minimal example (which requires https://github.com/jiffyclub/snakeviz to be installed) is a profiling graph of the code executed in the minimal example:\r\n\r\n\r\n\r\n\n\n### Expected outcome\n\nThe `plt.clf()` should be very fast compared to the actual plotting. Going into the details of the profiling results shows a large amount of time being spend in `axis.reset_ticks`. \r\n\n\n### Additional information\n\n_No response_\n\n### Operating system\n\nWindows\n\n### Matplotlib Version\n\n3.6.0.dev3058+g87197156eb\n\n### Matplotlib Backend\n\nQt5Agg\n\n### Python version\n\n 3.10.0\n\n### Jupyter version\n\n_No response_\n\n### Installation\n\ngit checkout","author":{"url":"https://github.com/eendebakpt","@type":"Person","name":"eendebakpt"},"datePublished":"2022-08-29T20:18:15.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":8},"url":"https://github.com/23771/matplotlib/issues/23771"}
| 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:5f4b7eab-0664-9f85-ad4f-b92d0de3b967 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B5BC:24B6F:2DCD5F6:41E81EE:6A5675F2 |
| html-safe-nonce | 96bc8a453de9be9ca8f9b9581b6ab3622a7ea703fe3ccadde9ad11584cc3bacb |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNUJDOjI0QjZGOjJEQ0Q1RjY6NDFFODFFRTo2QTU2NzVGMiIsInZpc2l0b3JfaWQiOiIzNjMxMzUzMzkxMjMyNzQyODk4IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 59fbd189c02301e8be3d9f17d13841f7d07f96ef98e89c8f776276b49177a79b |
| hovercard-subject-tag | issue:1354826313 |
| 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/23771/issue_layout |
| twitter:image | https://opengraph.githubassets.com/3156889f28118e58e6fc03513479091287276f4a7bf0c9181af788b2ccb99328/matplotlib/matplotlib/issues/23771 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/3156889f28118e58e6fc03513479091287276f4a7bf0c9181af788b2ccb99328/matplotlib/matplotlib/issues/23771 |
| og:image:alt | Bug summary For relatively simple plotting examples the plt.clf() command can take over 30% of the calculation time. One would expect that a clear command is relatively simple and takes a limited a... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | eendebakpt |
| hostname | github.com |
| expected-hostname | github.com |
| None | 19b5ee9431dcfce15ab4b001d626e4e3a6ba1acb7be814813a52bbebd9a86ef5 |
| 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 | afc01ffdb045f4ff81c6122091366ade7b6166b7 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width