これら 3 つの 投稿の一部を組み合わせると、これまでのところ次のようになります。
h = subplot(2,2,1);
line(1:10, rand(1,10));
set(h, 'buttondownfcn', ['h=gca; hc = copyobj(h, gcf);' ...
'set(hc, ''Units'', ''normal'',' ...
' ''Position'', [0.05 0.1 0.8 0.85],' ...
' ''buttondownfcn'', ''delete(gca)'');']);
完璧ではありませんが、機能します。

軸をクリックします。

展開された軸をクリックすると、非表示になります。

これにより、結果の軸をパン、ズーム、および "3D 回転" できることに注意してください。矢印ツールを選択すると、実際には「編集モード」になるので、代わりに使用しているツールの選択を解除することをお勧めします。例: ズームインしている場合は、ズームイン アイコンをもう一度クリックして、ツールの選択を解除します。クリックすると、軸のブローアップが「折りたたまれます」。
これまでの制限は、下にある小さなサブプロット軸の一部が時々見えることです。誰かがそれらを非表示にするエレガントな方法を推奨できれば、それは素晴らしい改善です.
編集この回答から学び(uipanel
他のコンテンツが透けて見えるのを防ぐために a を使用)、解決策を次のように変えました:
gcaExpand.m
:
function gcaExpand
set(copyobj(gca, uipanel('Position', [0 0 1 1])), ...
'Units', 'normal', 'OuterPosition', [0 0 1 1], ...
'ButtonDownFcn', 'delete(get(gca, ''Parent''))');
end
gcaExpandable.m
:
function gcaExpandable
set(gca, 'ButtonDownFcn', [...
'set(copyobj(gca, uipanel(''Position'', [0 0 1 1])), ' ...
' ''Units'', ''normal'', ''OuterPosition'', [0 0 1 1], ' ...
' ''ButtonDownFcn'', ''delete(get(gca, ''''Parent''''))''); ']);
end
最初のものは、現在のプロットをすぐに展開します。2 つ目は、プロットをクリックして展開する機能を追加します。どちらの場合も、もう一度クリックすると元に戻ります。
これらを、日常的に使用している他のすべてのカスタム Matlab 関数と共にディレクトリに配置しました。上記も送信する関数に含めることができます。
subplot
最初は、自動的に適用されるカスタム バージョンを作成するつもりでしたが、プロパティ (および位置を除く他のすべてのプロパティ) のようなコマンドが消去されるgcaExpandable
ため、機能しませんでした。この回答によると、 を に変更することでこれらのプロパティのリセットを回避できますが、これには副作用があります。たとえば、軸を自動的に再スケーリングしなくなりました。したがって、これまでのところ最もクリーンなソリューションは上記のようです。plot
ButtonDownFcn
NextPlot
'replacechildren'
plot