2

我有一个二维图,上面有许多数据元素,覆盖了广泛的区域。尽管所有数据都是必要的,但我通常对情节的一小部分感兴趣。我想以编程方式将视图集中在感兴趣的元素上,同时允许使用缩放工具(GUI 中的(-))快速回到更广阔的视角。

它易于使用set(gca, 'xlim', [limitsXOfSmallElement])set(gca, 'ylim', [limitsYOfSmallElement])设置轴限制,以便小元素成为焦点,但这使得无法使用 GUI (-) 缩放工具返回到一般视图,而无需手动将轴限制重置为原始值。

我的直觉是,这可以通过控制相机属性(CameraPositionCameraTarget/或CameraViewAngle)来解决,但是当我应用它们时,GUI 缩放工具的后期使用会对轴产生奇怪的影响,因为它会改变它在图形上的位置和大小。

有没有设置轴上显示的二维画布片段的好方法?

4

1 回答 1

1

考虑以下示例:

function example_zoom
    %# some plot
    plot(1:10)
    hAx = gca;

    %# save original axis limits
    setappdata(hAx, 'limits',get(gca,{'XLim','YLim'}))

    %# create custom toolbar button
    [X,map] = imread(fullfile(toolboxdir('matlab'),'icons','view_zoom_out.gif'));
    icon = ind2rgb(X,map);
    uipushtool('CData',icon, 'ClickedCallback',{@click_cb,hAx});

    %# zoom
    uiwait(msgbox('Zooming now, click button to reset', 'modal'))
    set(gca, 'XLim',[3 7], 'YLim',[2 9])
    %zoom on
end

function click_cb(o,e, hAx)
    %# restore original axis limits
    limits = getappdata(hAx, 'limits');
    set(hAx, 'XLim',limits{1}, 'YLim',limits{2})
end

这个想法是创建您自己的工具栏按钮,将轴限制恢复为其原始值。

阴谋

于 2013-04-26T15:08:30.243 回答