Title: plt.arrow start and end locations are wrong · Issue #12768 · matplotlib/matplotlib · GitHub
Open Graph Title: plt.arrow start and end locations are wrong · Issue #12768 · matplotlib/matplotlib
X Title: plt.arrow start and end locations are wrong · Issue #12768 · matplotlib/matplotlib
Description: Bug report Bug summary When I draw an arrow from a point (x, y) with offset (dx, dy), then I expect the arrow to start at (x, y) and point to (x+dx, y+dy). But that's not what happens. Code for reproduction import matplotlib.pyplot as pl...
Open Graph Description: Bug report Bug summary When I draw an arrow from a point (x, y) with offset (dx, dy), then I expect the arrow to start at (x, y) and point to (x+dx, y+dy). But that's not what happens. Code for rep...
X Description: Bug report Bug summary When I draw an arrow from a point (x, y) with offset (dx, dy), then I expect the arrow to start at (x, y) and point to (x+dx, y+dy). But that's not what happens. Code for...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/12768
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"plt.arrow start and end locations are wrong","articleBody":"### Bug report\r\n\r\n**Bug summary**\r\n\r\nWhen I draw an arrow from a point `(x, y)` with offset `(dx, dy)`, then I expect the arrow to start at (x, y) and point to `(x+dx, y+dy)`. But that's not what happens.\r\n\r\n**Code for reproduction**\r\n\r\n```python\r\nimport matplotlib.pyplot as plt\r\n\r\nplt.text(0, 2.1, 'head_starts_at_zero=False')\r\nplt.arrow(0, 2, 1, 0, head_width=0.05, head_starts_at_zero=False)\r\n\r\nplt.arrow(0, 1, 1, 0, head_width=0.05, head_starts_at_zero=True)\r\nplt.text(0, 0.8, 'head_starts_at_zero=True')\r\n\r\nplt.vlines([0, 1], 0, 3)\r\nplt.axis([-1, 2, 0, 3])\r\n```\r\n\r\n**Actual outcome**\r\n\r\nWith `head_starts_at_zero=False` the arrow is longer than specified by the `head_length` (possibly intended)\r\nWith `head_starts_at_zero=True` the arrow is the same length as before but moved along its direction by an arbitrary distance (possibly the `head_width`).\r\n\r\n\r\n\r\n**Expected outcome**\r\n\r\nThe default option should be to have the arrow start from the start coordinates and the arrow tip ending at the end coordinates. It might be nice to also have the option where the base of the arrow is at the end coordinates and the arrow head goes further (like the upper example in the plot).\r\n\r\nBesides this feature working wrong, the documentation is unclear, which made it hard for me to find this bug:\r\n\r\n\u003e head_starts_at_zero: bool (default: False)\r\n\u003e if True, the head starts being drawn at coordinate 0 instead of ending at coordinate 0.\r\n\r\nWhat's \"coordinate 0\" here?\r\n\r\nMight be better to write:\r\n\r\n\u003e head_starts_at_zero: bool (default: False)\r\n\u003e if True, the head starts being drawn at the specified end point instead of ending at the end point.\r\n\r\n\r\nif that's the intended behaviour.\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: Windows 10\r\n * Matplotlib version: 2.2.3\r\n * Matplotlib backend (`print(matplotlib.get_backend())`): Qt5Agg\r\n * Python version: 2.7\r\n * Jupyter version (if applicable): ---\r\n * Other libraries: ---\r\n\r\nEnvironment built from the Anaconda default channel.\r\n\r\n","author":{"url":"https://github.com/Austrianguy","@type":"Person","name":"Austrianguy"},"datePublished":"2018-11-07T21:57:40.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/12768/matplotlib/issues/12768"}
| 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:ff4cd748-ee29-17f7-2e36-240e2a493c3d |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D2B2:223B9A:B806F9:F97A7B:6A51EC6A |
| html-safe-nonce | f9765a671d46f986e39717ca7d505eaf3933a5e6855bd7f29321cfd0d571e9ee |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMkIyOjIyM0I5QTpCODA2Rjk6Rjk3QTdCOjZBNTFFQzZBIiwidmlzaXRvcl9pZCI6Ijc2NTc1ODQ2MjIxNzY0MzEyMTAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 206dd8d249f7101e1739ec52e134c3639186361e9fccb31c4e680bfe5b99a8d7 |
| hovercard-subject-tag | issue:378486770 |
| 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/12768/issue_layout |
| twitter:image | https://opengraph.githubassets.com/575221fdf9cbcb1b08c3aed5932ece7d5de9094c438a7a5ea34d762ab06dda04/matplotlib/matplotlib/issues/12768 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/575221fdf9cbcb1b08c3aed5932ece7d5de9094c438a7a5ea34d762ab06dda04/matplotlib/matplotlib/issues/12768 |
| og:image:alt | Bug report Bug summary When I draw an arrow from a point (x, y) with offset (dx, dy), then I expect the arrow to start at (x, y) and point to (x+dx, y+dy). But that's not what happens. Code for rep... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Austrianguy |
| 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 | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width