Dans matplotlib, il est possible d'obtenir les pixels à l'intérieur d'un polygone en utilisant matplotlib.nxutils.points_inside_poly
, à condition que les vertices soient préalablement définis.Obtenir des pixels à l'intérieur d'un patch
Comment pouvez-vous obtenir les points à l'intérieur d'un patch, par ex. une ellipse? Le problème: si vous définissez une ellipse matplotlib, elle a une méthode .get_verts()
, mais cela renvoie les sommets dans les unités de figure (au lieu de données).
On pourrait faire:
# there has to be a better way to do this,
# but this gets xy into the form used by points_inside_poly
xy = np.array([(x,y) for x,y in zip(pts[0].ravel(),pts[1].ravel())])
inds = np.array([E.contains_point((x,y)) for x,y in xy], dtype='bool')
Cependant, cela est très lent, car il tourne en boucle en python au lieu de C.
Vous pouvez utiliser les transformations pour changer les unités en données et en faire un poly, je pense. – tacaswell
@tcaswell - Je pense que c'est vrai. Dans ce cas, la question devrait être interprétée comme "Comment utiliser les transformations pour convertir les verts ..." – keflavich
Je n'ai pas le temps d'écrire une réponse correcte (désolé), mais ceci http://matplotlib.org /users/transforms_tutorial.html devrait vous aider à trouver la réponse. – tacaswell