Recursion 如何防止bqplot中交互绘图的递归?

Recursion 如何防止bqplot中交互绘图的递归?,recursion,plot,interactive,bqplot,Recursion,Plot,Interactive,Bqplot,我使用bqplot创建了一个交互式散点图,您可以在其中拖动点(使用enable\u move=True) 我不希望用户将点拖到线y=x上方。 如果他们这样做了,我希望这一点能回到最近的状态 问题是我不知道如何避免这里的无限递归 散点图需要知道其点的移动时间,以便检查移动情况,并可能进行恢复。 然而,当它开始反弹时,(点位置的)变化似乎触发了相同的回调 有谁能告诉我处理这个基本问题的“正确”方法吗 import bqplot.pyplot as plt import numpy as np de

我使用
bqplot
创建了一个交互式散点图,您可以在其中拖动点(使用
enable\u move=True

我不希望用户将点拖到线y=x上方。 如果他们这样做了,我希望这一点能回到最近的状态

问题是我不知道如何避免这里的无限递归

散点图需要知道其点的移动时间,以便检查移动情况,并可能进行恢复。 然而,当它开始反弹时,(点位置的)变化似乎触发了相同的回调

有谁能告诉我处理这个基本问题的“正确”方法吗

import bqplot.pyplot as plt
import numpy as np

def on_point_move(change, scat):
    if np.any(newx < scat.y):
        scat.x = change['old']
    
fig = plt.figure(animation_duration=400)
xs = 1.0*np.arange(3) # make sure these are floats
ys = 1.0*np.arange(3)
scat = plt.scatter(xs, ys, colors=['Red'], default_size=400, enable_move=True)
scat.observe(lambda change: on_point_move(change, scat), names=['x'])
fig
导入bqplot.pyplot作为plt
将numpy作为np导入
def on_point_move(更改、scat):
如果np.any(newx
您可以在on\u point\u move功能中暂时禁用观察功能。我也改变了一点逻辑

导入bqplot.pyplot作为plt
将numpy作为np导入
def on_point_移动(更改):
如果np.有(横截面x<横截面y):
不可察觉的一切
如果更改['name']='x':
scat.x=更改['old']
elif change['name']=“y”:
scat.y=更改['old']
观察(在点移动时,名称=['x','y'])
图=plt.图(动画持续时间=400)
xs=1.0*np.arange(3)#确保这些是浮点数
ys=1.0*np.arange(3)
scat=plt.scatter(xs,ys,colors=['Red'],默认大小=400,启用移动=True)
观察(在点移动时,名称=['x','y'])
无花果

谢谢,@DougR!我一直在寻找过滤或处理交互的方法。完全移除它肯定会奏效。