4

多くの場合、Matlab では、多くのサブプロット軸を持つ Figure をプロットしますが、それらはすべて小さいです。

一般的な UX パラダイムでは、このような小さなプロットをダブルクリックして、画面スペース全体を使用して詳しく見ることができると期待されます。

通常、これが を使用しない理由ですが、subplot代わりに多くの個々の図をプロットします。そのため、それらを画面上で移動し、(Windows では) 図をフルスクリーンに最大化するタイトルバーをダブルクリックできます。(もう一度ダブルクリックすると、元のサイズに戻ります。)

ただし、 の利点subplotは、一連のプロットが 1 つのパネルにグループ化されることです。このようなグループ (それぞれに 12 の個別のサブプロット軸がある) を多数プロットする場合、多数の個々の図を使用すると作業が難しくなります。

では、Matlab でこの機能を既に有効にする方法はありますか?

4

1 に答える 1

1

これら 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ため、機能しませんでした。この回答によると、 を に変更することでこれらのプロパティのリセットを回避できますが、これには副作用があります。たとえば、軸を自動的に再スケーリングしなくなりました。したがって、これまでのところ最もクリーンなソリューションは上記のようです。plotButtonDownFcnNextPlot'replacechildren'plot

于 2014-08-13T05:11:40.273 に答える