在2D视图中显示冲浪图上方的线条

时间:2014-08-07 19:52:02

标签: matlab line ginput

由于缺乏兴趣和需要答案,来自Matlab Answers的

Reposting

我有一个2D矩阵。我使用" surf"来绘制轴中的值。使用自定义色彩映射和2D视图。这部分有效。我试图修改ginput,以便允许以下内容:

  1. 点击图表上的一个点。
  2. 移动鼠标。
  3. 画一条线,将第一个点击连接到鼠标的当前位置。
  4. 问题是,即使我努力在前面画线,它也会隐藏在我的情节背后。

    这是第一次点击后在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。

1 个答案:

答案 0 :(得分:0)

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