Matplotlib – python – move the curve to the clicked location


# draw one point using subplot
# move the curve to the clicked locaction

import matplotlib.pyplot as plt
import numpy as np
import pdb

x = np.linspace(0, 2*3.14, 100)
y = np.sin(x)

def onPress(event):
    print(event.xdata, event.ydata)
    #print(help(pnt.set_data))
    x = pnt.get_xdata()
    y = pnt.get_ydata()
    ymax = np.max(y)
    yind = np.argmax(y)
    xmax = x[yind]
    y = y + event.ydata - ymax
    x = x + event.xdata - xmax
    pnt.set_data(x, y)
    pnt.figure.canvas.draw()

fig, ax = plt.subplots()
pnt, = ax.plot(x, y, 'ro')
pnt.figure.canvas.mpl_connect('button_press_event', onPress)
#pnt.figure.canvas.mpl_connect('motion_notify_event', onPress)

plt.show()

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s