Title: svg backend truncates output size to integer, which it doesn't need to (and pdf backend doesn't) · Issue #9815 · matplotlib/matplotlib · GitHub
Open Graph Title: svg backend truncates output size to integer, which it doesn't need to (and pdf backend doesn't) · Issue #9815 · matplotlib/matplotlib
X Title: svg backend truncates output size to integer, which it doesn't need to (and pdf backend doesn't) · Issue #9815 · matplotlib/matplotlib
Description: Bug report Bug summary For vector backends, it should be acceptable for the output canvas to have a noninteger size. Indeed, the pdf backend will output canvas with noninteger sizes "as is". On the other hand, the svg backend truncates t...
Open Graph Description: Bug report Bug summary For vector backends, it should be acceptable for the output canvas to have a noninteger size. Indeed, the pdf backend will output canvas with noninteger sizes "as is". On the...
X Description: Bug report Bug summary For vector backends, it should be acceptable for the output canvas to have a noninteger size. Indeed, the pdf backend will output canvas with noninteger sizes "as is&quo...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/9815
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"svg backend truncates output size to integer, which it doesn't need to (and pdf backend doesn't)","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\nFor vector backends, it should be acceptable for the output canvas to have a noninteger size. Indeed, the pdf backend will output canvas with noninteger sizes \"as is\". On the other hand, the svg backend truncates the output to the integer below, which it doesn't need to do.\r\n\r\n**Code for reproduction**\r\n\r\n\u003c!--A minimum code snippet required to reproduce the bug, also minimizing the number of dependencies required--\u003e\r\n\r\n```python\r\ngcf(); savefig(\"/tmp/foo.pdf\"); savefig(\"/tmp/foo.svg\")\r\n```\r\nand examine foo.pdf and foo.svg with a plain text viewer.\r\n\r\n**Actual outcome**\r\n\r\nfoo.pdf contains the line\r\n```\r\n/MediaBox [ 0 0 460.8 345.6 ] /Parent 2 0 R /Resources 8 0 R /Type /Page \u003e\u003e\r\n```\r\n(460.8 is 6.4 inches at 72dpi, 345.6 is 4.8 inches at 72 dpi).\r\n\r\nfoo.svg contains the line\r\n```\r\n\u003csvg height=\"345pt\" version=\"1.1\" viewBox=\"0 0 460 345\" width=\"460pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\u003e\r\n```\r\nso the SVG was truncated. Note that interestingly, the SVG also contains e.g.\r\n```\r\n \u003cpath d=\"M 0 345.6 \r\nL 460.8 345.6 \r\nL 460.8 0 \r\nL 0 0 \r\nz\r\n\" style=\"fill:#ffffff;\"/\u003e\r\n```\r\ni.e. some paths that overflow the SVG canvas.\r\n\r\nI believe it is just as valid for the SVG output to use noninteger sizes (at least, manually editing the file doesn't make inkscape complain).\r\n\r\n**Expected outcome**\r\n\r\nSVG backend should not crop the output size.\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: N/A\r\n * Matplotlib version: 2.1/master\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): SVG\r\n * Python version: N/A\r\n * Jupyter version (if applicable): N/A\r\n * Other libraries: N/A\r\n\r\n\u003c!--Please tell us how you installed matplotlib and python e.g., from source, pip, conda--\u003e\r\n\u003c!--If you installed from conda, please specify which channel you used if not the default--\u003e\r\n\r\n","author":{"url":"https://github.com/anntzer","@type":"Person","name":"anntzer"},"datePublished":"2017-11-19T18:27:48.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/9815/matplotlib/issues/9815"}
| 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:afddef71-1770-f451-2ce4-d973fc273e1e |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D6FE:3C82F7:A9439D:E2A69D:6A52BA56 |
| html-safe-nonce | d10f438a1feb6390b0d90f153d046612515d6661b31ab0bef94bc6721e83f86c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJENkZFOjNDODJGNzpBOTQzOUQ6RTJBNjlEOjZBNTJCQTU2IiwidmlzaXRvcl9pZCI6IjI0NTYxNDM4OTY4NzI0MDE0OTQiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 349bedac500870e89f3160509f1bb9fe12ae9b8f5e7de076212a5dffe42f7578 |
| hovercard-subject-tag | issue:275180399 |
| 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/9815/issue_layout |
| twitter:image | https://opengraph.githubassets.com/f4dd13210f2b1f732c06743b108117f794fb59d7abd2f77d64afe2fb96800a50/matplotlib/matplotlib/issues/9815 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/f4dd13210f2b1f732c06743b108117f794fb59d7abd2f77d64afe2fb96800a50/matplotlib/matplotlib/issues/9815 |
| og:image:alt | Bug report Bug summary For vector backends, it should be acceptable for the output canvas to have a noninteger size. Indeed, the pdf backend will output canvas with noninteger sizes "as is". On the... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | anntzer |
| 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 | canary-2 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width