Title: plt.bar() fails on 2D arrays with singleton dimensions. error message is unhelpful. · Issue #10733 · matplotlib/matplotlib · GitHub
Open Graph Title: plt.bar() fails on 2D arrays with singleton dimensions. error message is unhelpful. · Issue #10733 · matplotlib/matplotlib
X Title: plt.bar() fails on 2D arrays with singleton dimensions. error message is unhelpful. · Issue #10733 · matplotlib/matplotlib
Description: Bug report Bug summary plt.bar() only accept 1D arrays, and does not accept 2D arrays with a dimension that has length 1. E.g., does not accept arrays with shape (3,1). Unfortunately, the traceback is unhelpful. Code for reproduction fro...
Open Graph Description: Bug report Bug summary plt.bar() only accept 1D arrays, and does not accept 2D arrays with a dimension that has length 1. E.g., does not accept arrays with shape (3,1). Unfortunately, the traceback...
X Description: Bug report Bug summary plt.bar() only accept 1D arrays, and does not accept 2D arrays with a dimension that has length 1. E.g., does not accept arrays with shape (3,1). Unfortunately, the traceback...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/10733
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"plt.bar() fails on 2D arrays with singleton dimensions. error message is unhelpful.","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\nplt.bar() only accept 1D arrays, and does not accept 2D arrays with a dimension that has length 1. E.g., does not accept arrays with shape (3,1). Unfortunately, the traceback is unhelpful. \r\n\r\n\r\n**Code for reproduction**\r\n```python\r\nfrom matplotlib import pyplot as plt\r\nimport numpy as np\r\nplt.bar(np.zeros((2,)),np.zeros((2,1)))\r\n```\r\n\r\n**Actual outcome**\r\n```\r\n File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\r\n File \"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/pyplot.py\", line 2648, in bar\r\n ret = ax.bar(*args, **kwargs)\r\n File \"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/__init__.py\", line 1717, in inner\r\n return func(ax, *args, **kwargs)\r\n File \"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes/_axes.py\", line 2087, in bar\r\n label='_nolegend_',\r\n File \"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/patches.py\", line 659, in __init__\r\n Patch.__init__(self, **kwargs)\r\n File \"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/patches.py\", line 103, in __init__\r\n self.set_linewidth(linewidth)\r\n File \"/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/patches.py\", line 351, in set_linewidth\r\n self._linewidth = float(w)\r\nTypeError: only length-1 arrays can be converted to Python scalars\r\n```\r\n\r\n**Expected outcome**\r\n\r\nplt.bar() should be able to figure out that a 1D vector and a 2D array with a singleton dimension are equivalent. This can be done by applying squeeze if necessary. In any case if plt.bar() is going to fail unintuitively on this, it should test to see if the input is a 2D array, and provide an informative error message. \r\n\r\n**Matplotlib version**\r\n * Operating system: windows, linux, and mac\r\n * Matplotlib version: most recent \r\n * Matplotlib backend (`print(matplotlib.get_backend())`):\r\n * Python version: 2.7 and 3.6\r\n * Jupyter version (if applicable):\r\n * Other libraries: \r\n\r\nThis code works with matplotlib version 1.4.2 and does not work with 2.1.1. Other pyplot functions do not exhibit this behavior. E.g., plt.plot(np.zeros((2,1)),np.zeros((2,1))) works fine.","author":{"url":"https://github.com/HoniSanders","@type":"Person","name":"HoniSanders"},"datePublished":"2018-03-09T04:43:25.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":9},"url":"https://github.com/10733/matplotlib/issues/10733"}
| 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:13c2ea61-a457-3239-1f72-59df102f29f0 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | E456:3102C2:1702755:1F61B37:6A546D3C |
| html-safe-nonce | eef716eec5bc89d8f2c6bba9ca1f1fcf738feed70dc20a761111a96827f9b6d8 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFNDU2OjMxMDJDMjoxNzAyNzU1OjFGNjFCMzc6NkE1NDZEM0MiLCJ2aXNpdG9yX2lkIjoiODYzOTA3NDgzOTMzMDg0Mzk2NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ea59951286b84bf8dace17e414fc287b6a1fcff40e02e798b53243a88c1c3a14 |
| hovercard-subject-tag | issue:303722718 |
| 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/10733/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d114bf616f27189dfbb9c87b96180250f8dd9e1b2e5c521baea695c096918c72/matplotlib/matplotlib/issues/10733 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d114bf616f27189dfbb9c87b96180250f8dd9e1b2e5c521baea695c096918c72/matplotlib/matplotlib/issues/10733 |
| og:image:alt | Bug report Bug summary plt.bar() only accept 1D arrays, and does not accept 2D arrays with a dimension that has length 1. E.g., does not accept arrays with shape (3,1). Unfortunately, the traceback... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | HoniSanders |
| 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 | 6d28624802c2f7d9500239dd6870ed7031b7353b |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width