2

広範囲にわたる多くのデータ要素を含む 2D プロットがあります。すべてのデータが必要ですが、私は通常、プロットの小さな要素に関心があります。ズーム ツール (GUI では (-)) を使用して、より広い視点にすばやく戻ることができるようにしながら、プログラムで対象の要素にビューをフォーカスしたいと考えています。

set(gca, 'xlim', [limitsXOfSmallElement])小さな要素に焦点が合うように軸の制限を使用して設定するのは簡単ですset(gca, 'ylim', [limitsYOfSmallElement])が、これにより、手動で軸の制限を元の値にリセットしない限り、GUI (-) ズーム ツールを使用して一般ビューに戻ることができなくなります。

私の直感では、これはカメラ プロパティ ( CameraPositionCameraTargetおよび/またはCameraViewAngle) を制御することで解決できると思いますが、それらを適用すると、GUI ズーム ツールを後で使用すると、図の位置とサイズが変化するため、軸に奇妙な影響が及びます。

軸に表示される 2D キャンバスのフラグメントを設定する良い方法はありますか?

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 に答える