2
PatchCollectionにグループ化されたパッチのコレクションが、コレクションとして軸に追加されています。ピック・イベントのコールバックが確立されます。パッチの1つをクリックすると、ピック・イベントが発生し、コールバックが呼び出されますが、イベントのアーティスト・メンバーは、クリックされたアーティスト・オブジェクトではなくPatchCollectionオブジェクトです。各パッチをテストせずにクリックしたアーティストを特定するにはどうすればよいですか?PatchCollectionオブジェクトのピックイベントがクリックされたアーティストをターゲットにしていません
import matplotlib.pyplot as plt
from matplotlib.patches import Circle, Rectangle
from matplotlib.collections import PatchCollection
import numpy as np
def onclick(event):
if event.xdata is not None:
print('%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %
('double' if event.dblclick else 'single', event.button,
event.x, event.y, event.xdata, event.ydata))
def onpick(event):
print("artist=", event.artist)
#print("You picked {:s}, which has color={:s} and linewidth={:f}".format(\
# event.artist, event.artist.get_color(), event.artist.get_linewidth()))
N = 25
fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(111, aspect='equal')
ax.set_axis_bgcolor('0.8')
ax.set_xlim([0,1])
ax.set_ylim([0,1])
xpts = np.random.rand(N)
ypts = np.random.rand(N)
patches = []
for x,y in zip(xpts,ypts):
circle = Circle((x,y),0.03)
patches.append(circle)
colors = 100 * np.random.rand(len(patches))
p = PatchCollection(patches, alpha=.5, picker=2)
p.set_array(np.array(colors))
ax.add_collection(p)
#cid = fig.canvas.mpl_connect('button_press_event', onclick)
pid = fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
のようなものを印刷し、私は私がにすべてのパッチを均質化に関するドキュメントに一部を逃したと思いますコレクション。私はそれを単にリストとして維持していると仮定しました。とにかく、これにより、どのパッチかパッチがクリックされたかを把握できます。 – sizzzzlerz