在二维视图中显示冲浪图上方的线



由于缺乏兴趣和需要答案而从Matlab Answers转发。

我有一个二维矩阵。我使用"surf"在坐标轴上绘制值,并使用自定义颜色图和2D视图。这部分是有效的。我试图修改ginput,使其允许以下内容:
  1. 单击图形上的一个点。
  2. 移动鼠标。
  3. 绘制一条线,将第一个点点击连接到鼠标当前位置。

问题是,即使我努力在前面画线,它也会隐藏在我的情节后面。

这是在ginputmodded中第一次点击后执行的代码:

if isempty(out1)
    lineconnect = line('LineWidth',5, ...
        'XData',[pt(1,1),pt(1,1)], 'YData',[pt(1,2),pt(1,2)])
    v = allchild(gca)
    vsize = length(v);
    lineposinv = find(v == lineconnect)%index of lineconnect in v
    uistack(lineconnect,'up', lineposinv-1)%move lineconnect to front
    v = allchild(gca)
      linestore(lineconnect);
  end

当鼠标移动(WindowButtonMotionFcn)时执行以下命令:

function dummy()
    pts = pointstore;
    if ~isempty(pts) %block only executes after a point is clicked
        lineconnect = linestore();
        cp = get(gca,'CurrentPoint');
        set(lineconnect,'XData',[pts(1,1),cp(1,1)],...
                        'YData',[pts(1,2),cp(1,2)]);
        v = allchild(gca)
        vsize = length(v);
        lineposinv = find(v == lineconnect)%index of lineconnect in v
        uistack(lineconnect,'up', lineposinv-1)%move to front
        v = allchild(gca)
        linestore(lineconnect);
    end
end

linestore和pointstore是存储持久变量的辅助函数。

有什么办法可以让它正常工作吗?我在Windows 7上使用MATLAB R2014a。

好吧,我不确定这解决了问题,但它可能会。2D视图的问题是:这只是情节的另一个视角。数据仍然是3D坐标。我不是很确定,但是如果我没记错的话,ginput给出了xy坐标系。这意味着,如果您想在surf图上方显示一条线,则需要将其z坐标设置为大于最大冲浪值。

最新更新