Title: Popover over plot is very slow · Issue #12010 · matplotlib/matplotlib · GitHub
Open Graph Title: Popover over plot is very slow · Issue #12010 · matplotlib/matplotlib
X Title: Popover over plot is very slow · Issue #12010 · matplotlib/matplotlib
Description: Bug report Bug summary Gtk3 overlay widgets like popover is very slow when they placed over plot. Code for reproduction import gi # isort:skip gi.require_version('Gtk', '3.0') # NOQA: E402 from gi.repository import Gtk # isort:skip impor...
Open Graph Description: Bug report Bug summary Gtk3 overlay widgets like popover is very slow when they placed over plot. Code for reproduction import gi # isort:skip gi.require_version('Gtk', '3.0') # NOQA: E402 from gi....
X Description: Bug report Bug summary Gtk3 overlay widgets like popover is very slow when they placed over plot. Code for reproduction import gi # isort:skip gi.require_version('Gtk', '3.0') # NOQ...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/12010
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Popover over plot is very slow","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\nGtk3 overlay widgets like popover is very slow when they placed over plot.\r\n\r\n\r\n**Code for reproduction**\r\n\r\n```python\r\nimport gi # isort:skip\r\ngi.require_version('Gtk', '3.0') # NOQA: E402\r\nfrom gi.repository import Gtk # isort:skip\r\n\r\nimport numpy as np\r\nfrom matplotlib.backends.backend_gtk3agg import \\\r\n FigureCanvasGTK3Agg as FigureCanvas\r\nfrom matplotlib.figure import Figure\r\n\r\nwin = Gtk.Window()\r\n\r\nbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)\r\nbutton = Gtk.Button(label='Push me')\r\nbox.pack_start(button, False, True, 0)\r\n\r\npopover = Gtk.Popover(relative_to=button)\r\npopbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)\r\npixbuf = Gtk.IconTheme.get_default().load_icon('gtk-about', 256, 0)\r\nicon = Gtk.Image.new_from_pixbuf(pixbuf)\r\npopbox.pack_start(icon, False, True, 0)\r\nlabel = Gtk.Label('Popover should be slow')\r\npopbox.pack_start(label, False, True, 0)\r\npopover.add(popbox)\r\npopbox.show_all()\r\npopbox.set_margin_top(16)\r\npopbox.set_margin_bottom(16)\r\npopbox.set_margin_left(16)\r\npopbox.set_margin_right(16)\r\nbutton.connect('clicked', lambda w: popover.popup())\r\n\r\nfig = Figure()\r\nax = fig.add_subplot(111)\r\ncanvas = FigureCanvas(fig)\r\ncanvas.set_size_request(640, 489)\r\nbox.pack_start(canvas, True, True, 0)\r\n\r\narr = np.random.random((2, 2000, 2000))\r\nax.scatter(arr[0][0], arr[0][1], arr[1].flatten() * 40)\r\n\r\nwin.add(box)\r\nwin.connect('destroy', Gtk.main_quit)\r\nwin.show_all()\r\nGtk.main()\r\n```\r\n\r\n**Actual outcome**\r\n\r\nClick to ``\"push me\"`` button to show popover, animation will be slow.\r\ncProfile shows that most of time python spends in redrawing entire plot during animation.\r\n\r\n```\r\n ncalls tottime percall cumtime percall filename:lineno(function) \r\n 43 30.353 0.706 30.359 0.706 collections.py:883(set_sizes) \r\n 1 11.329 11.329 50.730 50.730 Gtk.py:1608(main) \r\n 42 4.675 0.111 5.254 0.125 {method 'draw_path_collection' of 'matplotlib.backends._backend_agg.RendererAgg' objects} \r\n 1 0.245 0.245 0.245 0.245 {method 'random_sample' of 'mtrand.RandomState' objects} \r\n 90130 0.155 0.000 0.155 0.000 path.py:208(vertices) \r\n 87356 0.155 0.000 0.155 0.000 path.py:241(simplify_threshold) \r\n35583/26326 0.155 0.000 0.295 0.000 artist.py:230(stale) \r\n 88197 0.150 0.000 0.150 0.000 path.py:222(codes) \r\n 88616 0.145 0.000 0.145 0.000 path.py:260(should_simplify) \r\n```\r\n\r\n**Expected outcome**\r\n\r\nPlot should be cached somehow and won't be redrawn in this case.\r\n\r\n**Matplotlib version**\r\n\r\n\u003c!--Please specify your platform and versions of the relevant libraries you are using:--\u003e\r\n * Operating system: Debian Sid\r\n * Matplotlib version: 2.2.3\r\n * Matplotlib backend: Gtk3Agg and Gtk3Cairo\r\n * Python version: 3.6.6\r\n * Gtk: 3.22,30\r\n\r\nMatplotlib installed in virtual environment with pip.\r\n\r\n\r\nI would like to fix this issue and make PR. Please point me any direction how this problem can be fixed.\r\n","author":{"url":"https://github.com/akhilman","@type":"Person","name":"akhilman"},"datePublished":"2018-09-04T00:17:11.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":5},"url":"https://github.com/12010/matplotlib/issues/12010"}
| 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:4e58354a-f254-5d59-8da4-5590e74d2e4b |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E154:95293:6FB65C:A27DC7:6A578C9C |
| html-safe-nonce | 0c3f20769a14b485a964fc915124a0d5db907f507fa8f5f2a5e449840e2130aa |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFMTU0Ojk1MjkzOjZGQjY1QzpBMjdEQzc6NkE1NzhDOUMiLCJ2aXNpdG9yX2lkIjoiODI0MDg0MDAwODQ0NzUyODA5MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ee5deba431375298307ac66d544e114680e49b32926c0f00b3bd0f094ce3ca91 |
| hovercard-subject-tag | issue:356616914 |
| 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/12010/issue_layout |
| twitter:image | https://opengraph.githubassets.com/82b698c051320a39bd5a8ba0b98d1e50300ebc19dee8b13e0284c1230613991a/matplotlib/matplotlib/issues/12010 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/82b698c051320a39bd5a8ba0b98d1e50300ebc19dee8b13e0284c1230613991a/matplotlib/matplotlib/issues/12010 |
| og:image:alt | Bug report Bug summary Gtk3 overlay widgets like popover is very slow when they placed over plot. Code for reproduction import gi # isort:skip gi.require_version('Gtk', '3.0') # NOQA: E402 from gi.... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | akhilman |
| hostname | github.com |
| expected-hostname | github.com |
| None | c6353e56e94423c9cd5abde7708a859afa36a0c1203c73749055bf6ee6704cd0 |
| 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 | f59ab1c46b638204e2aea09126d089be5dc773b7 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width