Skip to content

Deprecate Axes.arrow/pyplot.arrow #20387

Open

Description

@anntzer

Bug report

Bug summary

Axes.arrow/pyplot.arrow generates a FancyArrow, which has a rather awkward API (#12768); we typically suggest to use Axes.annotate/pyplot.annotate instead (even the docstring of arrow() does so!). We may want to keep FancyArrow around for backcompat (it is simple to convert calls to arrow() to ax.add_patch(FancyArrow(<the same args>))), but at least we should consider deprecating the toplevel arrow() function, which is just a bad trap for any new users.

Matplotlib version

  • Operating system:
  • Matplotlib version (import matplotlib; print(matplotlib.__version__)): 3.4.x
  • Matplotlib backend (print(matplotlib.get_backend())):
  • Python version:
  • Jupyter version (if applicable):
  • Other libraries:

Activity

  1. Valkje commented on Jan 23, 2025

    @Valkje

    I'd like to bump this. Just spent quite some time trying to get this to work on a polar plot before I stumbled across the relevant Github issues saying that arrow will not work there. Adding a note/warning to the docs that it probably won't work outside a cartesian coordinate system would already help a lot!
    (The current note only talks about Axes aspect ratio and limits, which is not the same thing as a different coordinate system.)

  2. timhoffm commented on Jan 24, 2025

    @timhoffm
    Member

    There are 17k usage of arrow() in GitHub repos: https://github.com/search?q=ax.arrow&type=code

    I think we have to take it slow (and yes we should have started that process 4 years ago).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions