Title: [Bug]: DPI of a figure is doubled after unpickling on M1 Mac · Issue #23471 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: DPI of a figure is doubled after unpickling on M1 Mac · Issue #23471 · matplotlib/matplotlib
X Title: [Bug]: DPI of a figure is doubled after unpickling on M1 Mac · Issue #23471 · matplotlib/matplotlib
Description: Bug summary When a figure is unpickled, it's dpi is doubled. This behaviour happens every time and if done in a loop it can cause an OverflowError. Code for reproduction import numpy as np import matplotlib import matplotlib.pyplot as pl...
Open Graph Description: Bug summary When a figure is unpickled, it's dpi is doubled. This behaviour happens every time and if done in a loop it can cause an OverflowError. Code for reproduction import numpy as np import m...
X Description: Bug summary When a figure is unpickled, it's dpi is doubled. This behaviour happens every time and if done in a loop it can cause an OverflowError. Code for reproduction import numpy as np impo...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/23471
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: DPI of a figure is doubled after unpickling on M1 Mac","articleBody":"### Bug summary\r\n\r\nWhen a figure is unpickled, it's dpi is doubled. This behaviour happens every time and if done in a loop it can cause an `OverflowError`.\r\n\r\n### Code for reproduction\r\n\r\n```python\r\nimport numpy as np\r\nimport matplotlib\r\nimport matplotlib.pyplot as plt\r\nimport pickle\r\nimport platform\r\n\r\nprint(matplotlib.get_backend())\r\nprint('Matplotlib ver:', matplotlib.__version__)\r\nprint('Platform:', platform.platform())\r\nprint('System:', platform.system())\r\nprint('Release:', platform.release())\r\nprint('Python ver:', platform.python_version())\r\n\r\n\r\ndef dump_load_get_dpi(fig):\r\n with open('sinus.pickle','wb') as file:\r\n pickle.dump(fig, file)\r\n\r\n with open('sinus.pickle', 'rb') as blob:\r\n fig2 = pickle.load(blob)\r\n return fig2, fig2.dpi\r\n\r\n\r\ndef run():\r\n fig = plt.figure()\r\n x = np.linspace(0,2*np.pi)\r\n y = np.sin(x)\r\n\r\n for i in range(32):\r\n print(f'{i}: {fig.dpi}')\r\n fig, dpi = dump_load_get_dpi(fig)\r\n\r\n\r\nif __name__ == '__main__':\r\n run()\r\n```\r\n\r\n\r\n### Actual outcome\r\n\r\n```\r\nMacOSX\r\nMatplotlib ver: 3.5.2\r\nPlatform: macOS-12.4-arm64-arm-64bit\r\nSystem: Darwin\r\nRelease: 21.5.0\r\nPython ver: 3.9.12\r\n0: 200.0\r\n1: 400.0\r\n2: 800.0\r\n3: 1600.0\r\n4: 3200.0\r\n5: 6400.0\r\n6: 12800.0\r\n7: 25600.0\r\n8: 51200.0\r\n9: 102400.0\r\n10: 204800.0\r\n11: 409600.0\r\n12: 819200.0\r\n13: 1638400.0\r\n14: 3276800.0\r\n15: 6553600.0\r\n16: 13107200.0\r\n17: 26214400.0\r\n18: 52428800.0\r\n19: 104857600.0\r\n20: 209715200.0\r\n21: 419430400.0\r\nTraceback (most recent call last):\r\n File \"/Users/wsykala/projects/matplotlib/example.py\", line 34, in \u003cmodule\u003e\r\n run()\r\n File \"/Users/wsykala/projects/matplotlib/example.py\", line 30, in run\r\n fig, dpi = dump_load_get_dpi(fig)\r\n File \"/Users/wsykala/projects/matplotlib/example.py\", line 20, in dump_load_get_dpi\r\n fig2 = pickle.load(blob)\r\n File \"/Users/wsykala/miniconda3/envs/playground/lib/python3.9/site-packages/matplotlib/figure.py\", line 2911, in __setstate__\r\n mgr = plt._backend_mod.new_figure_manager_given_figure(num, self)\r\n File \"/Users/wsykala/miniconda3/envs/playground/lib/python3.9/site-packages/matplotlib/backend_bases.py\", line 3499, in new_figure_manager_given_figure\r\n canvas = cls.FigureCanvas(figure)\r\n File \"/Users/wsykala/miniconda3/envs/playground/lib/python3.9/site-packages/matplotlib/backends/backend_macosx.py\", line 32, in __init__\r\n _macosx.FigureCanvas.__init__(self, width, height)\r\nOverflowError: signed integer is greater than maximum\r\n```\r\n\r\n### Expected outcome\r\n\r\n```\r\nMacOSX\r\nMatplotlib ver: 3.5.2\r\nPlatform: macOS-12.4-arm64-arm-64bit\r\nSystem: Darwin\r\nRelease: 21.5.0\r\nPython ver: 3.9.12\r\n0: 200.0\r\n1: 200.0\r\n2: 200.0\r\n3: 200.0\r\n4: 200.0\r\n5: 200.0\r\n6: 200.0\r\n7: 200.0\r\n8: 200.0\r\n9: 200.0\r\n10: 200.0\r\n11: 200.0\r\n12: 200.0\r\n13: 200.0\r\n14: 200.0\r\n15: 200.0\r\n16: 200.0\r\n17: 200.0\r\n18: 200.0\r\n19: 200.0\r\n20: 200.0\r\n21: 200.0\r\n22: 200.0\r\n```\r\n\r\n### Additional information\r\n\r\nThis seems to happen only on M1 MacBooks and the version of python doesn't matter.\r\n\r\n### Operating system\r\n\r\nOS/X\r\n\r\n### Matplotlib Version\r\n\r\n3.5.2\r\n\r\n### Matplotlib Backend\r\n\r\nMacOSX\r\n\r\n### Python version\r\n\r\n3.9.12\r\n\r\n### Jupyter version\r\n\r\n_No response_\r\n\r\n### Installation\r\n\r\npip","author":{"url":"https://github.com/wsykala","@type":"Person","name":"wsykala"},"datePublished":"2022-07-22T15:05:25.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/23471/matplotlib/issues/23471"}
| 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:6f6f815a-1551-27e0-96d8-048721271658 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9DEE:18EF60:786C31:A165F8:6A52A71B |
| html-safe-nonce | 5d636d66f377db1d039869c945e714b315c368b61804f7d8282e81790e0c30a7 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5REVFOjE4RUY2MDo3ODZDMzE6QTE2NUY4OjZBNTJBNzFCIiwidmlzaXRvcl9pZCI6IjQ0MzQ0OTkwOTg2MjQ4MjkyMTEiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | e59233db85ccb3fbf391ef41d432a281862a6c37b49bdfddf1d7907432ea38bf |
| hovercard-subject-tag | issue:1315121072 |
| 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/23471/issue_layout |
| twitter:image | https://opengraph.githubassets.com/6e707d63153628c524bb815196822c8ccca1c406a86c74f634c2ee5ac4e525a3/matplotlib/matplotlib/issues/23471 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/6e707d63153628c524bb815196822c8ccca1c406a86c74f634c2ee5ac4e525a3/matplotlib/matplotlib/issues/23471 |
| og:image:alt | Bug summary When a figure is unpickled, it's dpi is doubled. This behaviour happens every time and if done in a loop it can cause an OverflowError. Code for reproduction import numpy as np import m... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | wsykala |
| 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