使用 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 直方图一样使用回调函数?
问题是您已将回调绑定到 axes
的 ButtonDownFcn
并且 imagesc
对象 覆盖了 axes
并拥有自己的 ButtonDownFcn
。您也可以将回调分配给图像的 ButtonDownFcn
him = imagesc(data);
set(him, 'ButtonDownFcn', @callback)
或者您可以通过将 HitTest
属性 变为 'off'
来指示 image
对象不响应按钮按下
him = imagesc(data);
set(him, 'HitTest', 'off')
我创建了一个包含多个绘图的 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 直方图一样使用回调函数?
问题是您已将回调绑定到 axes
的 ButtonDownFcn
并且 imagesc
对象 覆盖了 axes
并拥有自己的 ButtonDownFcn
。您也可以将回调分配给图像的 ButtonDownFcn
him = imagesc(data);
set(him, 'ButtonDownFcn', @callback)
或者您可以通过将 HitTest
属性 变为 'off'
image
对象不响应按钮按下
him = imagesc(data);
set(him, 'HitTest', 'off')