Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Annotation.contains and FancyArrow.contains return incorrect values #10875

Copy link
Copy link
Closed
@anntzer

Description

@anntzer
Issue body actions

Bug report

Consider the following example:

from pylab import *
from matplotlib.backend_bases import MouseEvent
rcdefaults()

fig, axs = plt.subplots(2)
for i, ax in enumerate(axs):
    ax.set(xlim=(0, 1), ylim=(0, 1))
    ann = ax.annotate(
        "hello", xy=(.4, .4), xytext=(.6, .6), arrowprops={"arrowstyle": "->"})
    ax.figure.canvas.draw()
    xs = np.linspace(*ax.get_xlim(), 30)
    ys = np.linspace(*ax.get_ylim(), 30)
    for x in xs:
        for y in ys:
            event = MouseEvent(
                "button_press_event",
                ax.figure.canvas,
                *ax.transData.transform_point((x, y)))
            art = [ann, ann.arrow_patch][i]
            ax.plot(x, y, ".", c="g" if art.contains(event)[0] else "r")
plt.show()

figure_1

Points in green mark (a) in the top plot, points that are "contained" (per artist.contains) in the annotation object; (b) in the bottom plot, points that are "contained" in the arrow patch of the annotation object.

Obviously neither set of contained points is correct. This affects, for example, the points that trigger interactive dragging of the annotation.

Matplotlib version

  • Operating system:
  • Matplotlib version: 2.2.1, but also present in 1.5
  • Matplotlib backend (print(matplotlib.get_backend())): qt5
  • Python version: 3.6
  • Jupyter version (if applicable):
  • Other libraries:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.