Title: MacOSX backend hangs drawing lines with many dashes/dots · Issue #6165 · matplotlib/matplotlib · GitHub
Open Graph Title: MacOSX backend hangs drawing lines with many dashes/dots · Issue #6165 · matplotlib/matplotlib
X Title: MacOSX backend hangs drawing lines with many dashes/dots · Issue #6165 · matplotlib/matplotlib
Description: I've run into a problem drawing plots with dashed or dotted lines that extend out to many times the size of the plot area. This SSCCE demonstrates the issue on my system: import matplotlib matplotlib.use('macosx') import matplotlib.pyplo...
Open Graph Description: I've run into a problem drawing plots with dashed or dotted lines that extend out to many times the size of the plot area. This SSCCE demonstrates the issue on my system: import matplotlib matplotl...
X Description: I've run into a problem drawing plots with dashed or dotted lines that extend out to many times the size of the plot area. This SSCCE demonstrates the issue on my system: import matplotlib matp...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/6165
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"MacOSX backend hangs drawing lines with many dashes/dots","articleBody":"I've run into a problem drawing plots with dashed or dotted lines that extend out to many times the size of the plot area. This SSCCE demonstrates the issue on my system:\n\n```\nimport matplotlib\nmatplotlib.use('macosx')\nimport matplotlib.pyplot as plt\n\nline_ymax = 1e6\nplot_ymax = 2\nplt.plot([0, 0], [1, line_ymax], linestyle='dotted')\nplt.ylim(0, plot_ymax)\nplt.show()\n```\n\nI instrumented this with a bit of timing code and found that the call to `plt.show()` takes about 13 seconds on my machine, during which the Python process is using 100% CPU. Playing with the values shows that the time taken by `show()` seems to be asymptotically linear in `line_ymax / plot_ymax`. Changing the line style to `'dashed'` reduces the time by a factor of 2.5-3, while changing it to `'solid'` makes the problem go away entirely. (I suppose this suggests something may be linear in the number of separate line segments being drawn.)\n\nI also ran the code with line tracing enabled (`python -m trace -t hang-mwe.py`) and identified the specific line that hangs (or at least, the last line to be printed before the trace output pauses):\n\n```\npath.py(260): return self._simplify_threshold\n```\n\nA larger context from this run is attached in [trace.txt](https://github.com/matplotlib/matplotlib/files/176480/trace.txt), in case it helps; look around line 421.\n\nThe problem does not occur in the webagg backend. I also tried swapping in other backends (agg, cairo, pdf, pgf, ps, svg, template - all the options that didn't give an error) for good measure, but none of them displayed anything (though neither did they have any noticeable \"hang time\").\n\nI found the issue on OS X El Capitan using Matplotlib 1.5.1rc1 and Python 3.4.4, both installed through MacPorts. It goes back at least as far as 1.4.0 (the earliest version I could compile) and is still present in the current master branch (196f3446a3d5178c58144cee796fa8e8aa8d2917).\n","author":{"url":"https://github.com/diazona","@type":"Person","name":"diazona"},"datePublished":"2016-03-16T17:32:11.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/6165/matplotlib/issues/6165"}
| 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:9c86d9eb-b39e-ddb2-fd9f-cc1784f09f48 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E452:1D00CE:82E977:AD9F58:6A52ABEC |
| html-safe-nonce | d04705f4cd22fb6626f64317ae0c0d1a0f8e4cd3fda4416495989d6c4a1f9245 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNDUyOjFEMDBDRTo4MkU5Nzc6QUQ5RjU4OjZBNTJBQkVDIiwidmlzaXRvcl9pZCI6IjMzMTczNTE0Mjg4OTMzNTQ5ODgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | c51acc26011f915ae6fb414f07527e3cca1fb7e3d5193eb40457d6146ec7ddc4 |
| hovercard-subject-tag | issue:141346131 |
| 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/6165/issue_layout |
| twitter:image | https://opengraph.githubassets.com/9a3c746c7e9e7d194195a7000d9ab34d830d2f98c6c492a9c1e7537d130f92fa/matplotlib/matplotlib/issues/6165 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9a3c746c7e9e7d194195a7000d9ab34d830d2f98c6c492a9c1e7537d130f92fa/matplotlib/matplotlib/issues/6165 |
| og:image:alt | I've run into a problem drawing plots with dashed or dotted lines that extend out to many times the size of the plot area. This SSCCE demonstrates the issue on my system: import matplotlib matplotl... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | diazona |
| 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