MATLAB 中的鼠标点击回调以绘制线图

Mouse click callback in MATLAB for line plot

如果我想阅读鼠标的位置,请单击某些图像,我可以使用 callback 操作来完成。

function[]=FooBar
Img=imshow(FooMatrix,'callback',@(s,e)ImageClickCallback());

 function ImageClickCallback(objectHandle,~)
  axesHandle  = get(objectHandle,'Parent');
  coordinates = get(axesHandle,'CurrentPoint');
  coordinates = round(coordinates(1,1:2))
 end
end

它适用于图像,但现在我只有带线的轴。我试图将 callback 例程设置为适当的 axesline 但我收到错误消息

Error while evaluating uicontrol Callback

Error using hg.figure/set The name 'callback' is not an accessible property for an instance of class 'figure'.


背景:
我正在尝试使用线图创建 GUI,比如 y=f(x) 使用户能够在线路上的 select 点。想法是读取鼠标单击的 [x,y] 坐标并突出显示点 [f'(y),y][x,f(x)],其中 f'f 的反函数。像 Data Cursor 函数那样。

callback 不是线对象的有效 属性。您需要设置线对象的 ButtonDownFcn 属性。

h = plot(1:3, 'ButtonDownFcn', @(s,e)ImageClickCallback()

ButtonDownFcn 属性 也可用于大多数 UI 元素(包括轴)

set(gca, 'ButtonDownFcn', @mycallback)