Для перемещения прямоугольника вы можете использовать простую функцию, которая подключается к «событию нажатия кнопки» через fig.canvas.mpl_connect('button_press_event', <function_name>)
и заново определяет координаты x, y начала координат прямоугольника.Я сдвинул их на половину ширины и высоты прямоугольника, чтобы точка, по которой вы щелкали, была в центре.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def on_press(event):
xpress, ypress = event.xdata, event.ydata
w = rect.get_width()
h = rect.get_height()
rect.set_xy((xpress-w/2, ypress-h/2))
ax.lines = []
ax.axvline(xpress, c='r')
ax.axhline(ypress, c='r')
fig.canvas.draw()
x = y = 0.1
fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
fig.canvas.mpl_connect('button_press_event', on_press)
rect = patches.Rectangle((x, y), 0.1, 0.1, alpha=1, fill=None, label='Label')
ax.add_patch(rect)
plt.show()
Что касается красивого прямоугольника, взгляните на патчей matplotlib или галерея и посмотрите, найдете ли вы что-то подходящее.Я добавил перекрестие с красными линиями в качестве альтернативы.