Onclick Function Matplotlib
cmap = mpl.colors.ListedColormap([[1,0,0], [0,0,1], [0,1,0], [1,1,0]]) self.fig = plt.figure(figsize=(6,6)) self.ax = self.fig.add_axes([0.1, 0.1, 0.8, 0.8]) x_ax = self.fig.a
Solution 1:
The primary problem is that you are creating a new canvas
instead of using the one fig
already has. There are (atleast) two ways to do what you want.
You can do this by setting the images to respond to the pick event (see this tutorial example 4):
cmap = mpl.colors.ListedColormap([[1,0,0], [0,0,1], [0,1,0], [1,1,0]])
xcolors = arange(15).reshape(15,1)
ycolors = arange(15).reshape(1,15)
fig = plt.figure(figsize=(6,6))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x_ax = fig.add_axes([0.05, 0.1, 0.05, 0.8])
x2_ax = fig.add_axes([0.05, 0.1, 0.05, 0.8])
y_ax = fig.add_axes([0.1, 0.05, 0.8, 0.05])
x_ax.imshow(xcolors, cmap=cmap, interpolation='none', picker=True)
x_ax.set_aspect('auto')
x_ax.set_position((0.1,0.1,0.05,0.8))
y_ax.imshow(ycolors, cmap=cmap, interpolation='none', picker=True)
def on_pick(event):
artist = event.artist
if isinstance(artist, matplotlib.image.AxesImage):
im = artist
A = im.get_array()
print A.shape,
print'hello'
canvas = fig.canvas
canvas.mpl_connect('pick_event',on_pick)
Alternatively, you can set the axes to respond to the pick event (see onclick method on a colorbar matplotlib python) as such:
cmap = mpl.colors.ListedColormap([[1,0,0], [0,0,1], [0,1,0], [1,1,0]])
xcolors = arange(15).reshape(15,1)
ycolors = arange(15).reshape(1,15)
fig = plt.figure(figsize=(6,6))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x_ax = fig.add_axes([0.05, 0.1, 0.05, 0.8])
x2_ax = fig.add_axes([0.05, 0.1, 0.05, 0.8])
y_ax = fig.add_axes([0.1, 0.05, 0.8, 0.05])
x_ax.imshow(xcolors, cmap=cmap, interpolation='none')
x_ax.set_aspect('auto')
x_ax.set_position((0.1,0.1,0.05,0.8))
y_ax.imshow(ycolors, cmap=cmap, interpolation='none')
x_ax.set_picker(5)
y_ax.set_picker(5)
def on_pick(event):
artist = event.artist
if isinstance(artist, matplotlib.axes.Axes):
print event.mouseevent.ydata,
print event.mouseevent.xdata,
print'hello'
canvas = fig.canvas
canvas.mpl_connect('pick_event',on_pick)
Notice the difference in the type of artist that the event is carrying with it (and hence the information you have easy access to).
Post a Comment for "Onclick Function Matplotlib"