使用 imagesc 绘图时点击操作

Action on click when plotting with imagesc

我创建了一个包含多个绘图的 GUI。在一些图上,我有一维直方图和垂直线,当我点击图表时,垂直线会改变位置。就像这里的一个例子是分配给情节的一条线:

lines.L1 = line([0.01 0.01],[0 max(e1)],'Color','red');
set(lines.L1,'parent',handles.plot_e1);

在回调函数中,我只是更改 'XData' 和 'YData' 并重新绘制线条。比较简单。

我的问题是,为什么我不能使用 'imagesc' 函数对二维直方图(我想是 "heatmap")成像的绘图执行此操作?在绘制我点击移动线之前工作得很好,但是一旦我使用 imagesc 绘制没有任何反应,没有错误消息或任何东西。事实上,回调函数根本没有 运行。

是否有更好的方法来绘制带有颜色图例的 2D 直方图,让我可以像使用 1D 直方图一样使用回调函数?

问题是您已将回调绑定到 axesButtonDownFcn 并且 imagesc 对象 覆盖了 axes并拥有自己的 ButtonDownFcn。您也可以将回调分配给图像的 ButtonDownFcn

him = imagesc(data);
set(him, 'ButtonDownFcn', @callback)

或者您可以通过将 HitTest 属性 变为 'off'

来指示 image 对象不响应按钮按下
him = imagesc(data);
set(him, 'HitTest', 'off')