タブ(ペイン)を切り替えてグラフを表示するにはどうすればよいですか?
89 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 8 月 27 日
編集済み: MathWorks Support Team
2023 年 5 月 10 日
タブ(ペイン)を切り替えてグラフを表示する方法を教えてください。
採用された回答
MathWorks Support Team
2023 年 5 月 10 日
編集済み: MathWorks Support Team
2023 年 5 月 10 日
MATLAB R2016a 以降のバージョンの場合:
MATLAB R2016a から提供された AppDesigner では、[コンテナー]ライブラリに "タブグループ"を用いて、タブを用いた GUI を作成可能です。
Tab Group のプロパティについては、以下の URL よりヘルプドキュメントをご覧ください。
R2022a 以降
R2021b 以前
下記コマンドを実行することでも、下記コマンドを実行することでヘルプドキュメントをご覧いただけます。
R2022a 以降
>> web(fullfile(docroot, 'matlab/ref/matlab.ui.container.tabgroup-properties.html?s_tid=doc_srchtitle'))
R2021b 以前
>> web(fullfile(docroot, 'matlab/ref/tabgroupappdesigner-properties.html'))
MATLAB R2014b 以降のバージョンの場合:
プログラムベースの設計であれば、uitab 関数や、uitabgroup 関数を用いて作成することができます。
また、GUIDE 機能の中で uitab を使用することもできます。GUIDE アイテムの選択肢にはタブが用意されておりませんが、以下の手順で GUI にタブを表示可能です。
サンプルとして、sin 関数、ランダムプロット、peaks の3種類のプロットを各タブ内に表示します。
※サンプルファイルは、回答上部の GUIDEtab.fig/ GUIDEtab.m のリンクかダウンロードできます。
まず、GUIDE編集画面でタブを表示する領域にダミーとなるパネル(タブ予定地)を配置します。
次に、OpeningFcnの中に以下を記述します。
handles.uipanel1.Units = 'normalized'; %パネルのPositionフォーマットをuitabのPositionフォーマットと合わせる
pos = handles.uipanel1.Position; %パネルのPositionを取得する
handles.uipanel1.Visible = 'off'; %パネルを非表示にする
handles.uitabgroup1 = uitabgroup('Position',pos); %取得したPositionを使用してuitabgroupを定義する
handles.uitab1 = uitab(handles.uitabgroup1,'Title','sin'); %1つめのタブを定義する
handles.uitab2 = uitab(handles.uitabgroup1,'Title','random'); %2つめのタブを定義する
handles.uitab3 = uitab(handles.uitabgroup1,'Title','peaks'); %3つめのタブを定義する
さらに、OpeningFcn 内で各プロットを表示するには、以下のように各 uitab のハンドル(handles.uitab1など)を使用して axes の親(Parent) を指定し、プロット関数を使用します。
axes('Parent',handles.uitab1); % uitab1 に対する axes 指定
plot(sin(1:0.1:10))
axes('Parent',handles.uitab2); % uitab2 に対する axes 指定
plot(rand(100,1),'o')
axes('Parent',handles.uitab3); % uitab3 に対する axes 指定
peaks;
以上の方法で、GUIDE機能で作成するGUIに対してタブを配置することが可能です。
また、GUIDE機能ではなくプログラムベースでuitabを使用したGUI作成の詳細については、以下の URL をご覧ください。
・タブ付きパネルをもつユーザー インターフェイスのプログラムによる作成
MATLAB R2014a 以前のバージョンの場合:
次の3通りの方法について説明します。
1. tabdlg関数を使用する方法
2. ドッキング機能を使用する方法
3. GUIDE機能を使用する方法
1. tabdlg関数を使用する方法
タブ付きのダイアログボックスを作成する関数として、tabdlg関数が提供されています。
tabdlgコマンドで作成した各シートのハンドル番号を、表示するAxesの親プロパティに設定することで、複数のグラフをタブ表示することができます。
% タブに表示する文字
tabstr = {'Random','Sine Wave'};
% タブ付きダイアログボックスの作成
% h:ダイアログボックスのハンドル、pos:各シートの位置、panels:各シートのハンドル
[h, pos, panels] = tabdlg('create',tabstr);
% タブ付きダイアログボックスを表示
set(h,'Visible','on');
% 1つ目のAxesの親プロパティに1つ目のシートのハンドル番号を設定
axes('Parent',panels(1));
plot(rand(5));
% 2つ目のAxesの親プロパティに2つ目のシートのハンドル番号を設定
axes('Parent',panels(2));
t = 0:.01:2*pi;
plot(t, sin(t));
2. ドッキング機能を使用する方法
Figureの'WindowStyle'プロパティを'docked'にすることで、複数のFigureをまとめて表示することができ、ドキュメントバーで表示するグラフを切り替えることができます。
figure('WindowStyle','docked','Name','Random')
plot(rand(5))
figure('WindowStyle','docked','Name','Sine Wave')
t = 0:.1:2*pi;
plot(t,sin(t))
3. GUIDE機能を使用する方法
あらかじめ同じ位置にAxesを重ねておき、一方のAxes及び描画オブジェクト(Line等)の'Visible'プロパティを'on'にした時に他方のAxes及び描画オブジェクトの'Visible'プロパティを'off'に設定すると、表示するグラフを1つだけにすることができます。この切り替え処理を行うトグルボタン等を配置することで、タブ切り替えと同様の機能を作成することができます。
※サンプルファイルは、回答上部の tab_example.fig / tab_example.m のリンクかダウンロードできます。
<<補足>>
ユーザコミュニティである MATLAB Central には、関連ののプログラムが公開されています。
ただし、MATLAB Centralにおいてフリーで公開されているファイルの内容に関しましては、直接プログラム作成者の方にお問い合わせください。
●Tab panel example
●TabPanel Constructor v2.8
0 件のコメント
その他の回答 (0 件)
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!