# start in non-inline mode, so we can use interactive plots %pylab print help(plt.connect) import sys fig, ax = plt.subplots() def on_key_press(event): print event.key sys.stdout.flush() fig.canvas.mpl_connect('key_press_event', on_key_press) fig.canvas.mpl_disconnect(fig.canvas.manager.key_press_handler_id) import sys fig, ax = plt.subplots() def on_key_press(event): print event.key sys.stdout.flush() fig.canvas.mpl_disconnect(fig.canvas.manager.key_press_handler_id) fig.canvas.mpl_connect('key_press_event', on_key_press) fig, ax = plt.subplots() x = np.linspace(0, 10, 1000) line, = ax.plot(x, np.sin(x)) def on_key_press(event): # If the key is one of the shorthand color notations, set the line color if event.key in 'rgbcmyk': line.set_color(event.key) fig.canvas.draw() fig.canvas.mpl_disconnect(fig.canvas.manager.key_press_handler_id) fig.canvas.mpl_connect('key_press_event', on_key_press) import sys fig, ax = plt.subplots() def on_button_press(event): print dir(event) print "Button:", event.button print "Figure coordinates:", event.x, event.y print "Data coordinates:", event.xdata, event.ydata sys.stdout.flush() fig.canvas.mpl_connect('button_press_event', on_button_press) import sys fig, ax = plt.subplots() def on_mouse_move(event): print "Data coordinates:", event.xdata, event.ydata sys.stdout.flush() fig.canvas.mpl_connect('motion_notify_event', on_mouse_move) fig, ax = plt.subplots() ax.set_xlim(-1, 2) ax.set_ylim(-1, 2) rect = plt.Rectangle((0, 0), 1, 1, fc=np.random.random(3)) ax.add_patch(rect) def on_click(event): x, y = event.xdata, event.ydata if (x > 0) and (x < 1) and (y > 0) and (y < 1): rect.set_fc(np.random.random(3)) fig.canvas.draw() fig.canvas.mpl_connect('button_press_event', on_click) fig, ax = plt.subplots() ax.set_xlim(-1, 2) ax.set_ylim(-1, 2) rect = plt.Rectangle((0, 0), 1, 1, fc=np.random.random(3), picker=True) ax.add_patch(rect) def on_pick(event): artist = event.artist artist.set_fc(np.random.random(3)) fig.canvas.draw() fig.canvas.mpl_connect('pick_event', on_pick) fig, ax = plt.subplots() x = np.linspace(0, 10, 1000) ax.plot(x, np.sin(x), c=np.random.random(3), lw=3, picker=5) # 5 points tolerance ax.plot(x, np.cos(x), c=np.random.random(3), lw=3, picker=5) # 5 points tolerance def on_pick(event): artist = event.artist artist.set_color(np.random.random(3)) fig.canvas.draw() fig.canvas.mpl_connect('pick_event', on_pick) from tutorial_lib.simple_cube import Cube c = Cube() fig, ax = plt.subplots(figsize=(8, 8)) c.add_to_ax(ax) c.rotate(c.x - c.y, -np.pi / 6) for i in range(50): c.rotate([1, 0, 0], np.pi / 20) fig.canvas.draw() def key_press(event): if event.key == 'left': c.rotate(c.y, np.pi / 12) elif event.key == 'right': c.rotate(c.y, -np.pi / 12) elif event.key == 'up': c.rotate(c.x, np.pi / 12) elif event.key == 'down': c.rotate(c.x, -np.pi / 12) fig.canvas.draw() fig.canvas.mpl_connect('key_press_event', key_press)