アプリ内での表形式データの表示
table 配列は、表形式データを MATLAB® 変数として保存する場合に便利です。たとえば、関数 readtable
を呼び出して、スプレッドシートから table 配列を作成することができます。
一方、Table
UI コンポーネントは、アプリ内に表形式データを表示するユーザー インターフェイス コンポーネントです。R2018a 以降は、Table
UI コンポーネントに表示できるデータ型に table 配列が含まれます。関数 uifigure
で作成された App Designer のアプリおよび Figure のみが table 配列をサポートします。
アプリに table 配列データを表示すると、特定のデータ型の対話型機能を利用できます。また、Table
UI コンポーネントがサポートする他の型の配列とは異なり、table 配列データは、Table
UI コンポーネントの ColumnFormat
プロパティに従って表示されません。
logical データ
Table
UI コンポーネントでは、logical 値はチェック ボックスとして表示されます。true
値はオンで、false
値はオフです。Table
UI コンポーネントの ColumnEditable
プロパティが true
の場合、ユーザーはアプリ内でチェック ボックスを選択してオフにすることができます。
fig = uifigure; tdata = table([true; true; false]); uit = uitable(fig,'Data',tdata); uit.Position(3) = 130; uit.RowName = 'numbered';
categorical データ
categorical
値はドロップダウン リストまたはテキストとして表示されます。Table
UI コンポーネントの ColumnEditable
プロパティが true
の場合、カテゴリはドロップダウン リストに表示されます。それ以外の場合は、カテゴリはドロップダウン リストなしのテキストとして表示されます。
fig = uifigure; cnames = categorical({'Blue';'Red'},{'Blue','Red'}); w = [400; 700]; tdata = table(cnames,w,'VariableNames',{'Color','Wavelength'}); uit = uitable(fig,'Data',tdata,'ColumnEditable',true);
categorical
配列が保護されていない場合、ユーザーは実行中のアプリでセルに入力することによって新しいカテゴリを追加できます。
datetime データ
datetime
値は、対応する table 変数 (datetime
配列) の Format
プロパティに従って表示されます。
fig = uifigure; dates = datetime([2016,01,17; 2017,01,20],'Format','MM/dd/uuuu'); m = [10; 9]; tdata = table(dates,m,'VariableNames',{'Date','Measurement'}); uit = uitable(fig,'Data',tdata);
形式を変更するには、ドット表記を使用して table 変数の Format
プロパティを設定します。次に、Table
UI コンポーネント内のデータを置換します。
tdata.Date.Format = 'dd/MM/uuuu';
uit.Data = tdata;
Table
UI コンポーネントの ColumnEditable
プロパティが true
の場合、ユーザーはアプリ内で日付値を変更できます。列が編集可能な場合、アプリでは、datetime
配列の Format
プロパティに従った入力値が想定されます。ユーザーが無効な日付を入力すると、テーブルに表示される値は NaT
になります。
duration データ
duration
値は、対応する table 変数 (duration
配列) の Format
プロパティに従って表示されます。
fig = uifigure; mtime = duration([0;0],[1;1],[20;30]); dist = [10.51; 10.92]; tdata = table(mtime,dist,'VariableNames',{'Time','Distance'}); uit = uitable(fig,'Data',tdata);
形式を変更するには、ドット表記を使用して table 変数の Format
プロパティを設定します。
tdata.Time.Format = 's';
uit.Data = tdata;
Table
UI コンポーネントの ColumnEditable
が true
の場合でも、duration
値を含むセルは実行中のアプリでは編集できません。
非スカラー データ
非スカラー値のアプリ内での表示方法は、コマンド ウィンドウでの表示と同じです。たとえば、次の table 配列には 3 次元配列と struct
配列が含まれています。
fig = uifigure; arr = {rand(3,3,3); rand(3,3,3)}; s = {struct; struct}; tdata = table(arr,s,'VariableNames',{'Array','Structure'}); uit = uitable(fig,'Data',tdata);
複数列の table 配列変数が、コマンド ウィンドウでの表示と同様に、アプリ内でも列の組み合わせとして表示されます。たとえば、この table 配列の変数 RGB
は 3 行 3 列の配列です。
n = [1;2;3]; rgbs = [128 122 16; 0 66 155; 255 0 0]; tdata = table(n,rgbs,'VariableNames',{'ROI','RGB'})
tdata = 3×2 table ROI RGB ___ _________________ 1 128 122 16 2 0 66 155 3 255 0 0
Table
UI コンポーネントでも同様の表示となります。RGB
列で項目を選択すると、その行のサブ列がすべて選択されます。Table
UI コンポーネントの ColumnEditable
プロパティが true
の場合でも、サブ列内の値は実行中のアプリでは編集できません。
fig = uifigure;
uit = uitable(fig,'Data',tdata);
欠損データ値
欠損値は、データ型に従ってインジケーターとして表示されます。
欠損 string は
<missing>
として表示されます。未定義の
categorical
値は<undefined>
として表示されます。無効または未定義の数値または
duration
値はNaN
として表示されます。無効または未定義の
datetime
値はNaT
として表示されます。
Table
UI コンポーネントの ColumnEditable
プロパティが true
の場合、ユーザーは実行中のアプリ内で値を修正できます。
fig = uifigure; sz = categorical([1; 3; 4; 2],1:3,{'Large','Medium','Small'}); num = [NaN; 10; 12; 15]; tdata = table(sz,num,'VariableNames',{'Size','Number'}); uit = uitable(fig,'Data',tdata,'ColumnEditable',true);
例: table を表示するアプリ
この例では、table データを使用するアプリ内で table UI コンポーネントを表示する方法を示します。table には、numeric
、logical
、categorical
、および複数列の変数が含まれています。
StartupFcn
コールバックにより、スプレッドシートが table 配列に読み込まれます。次に、データのサブセットが表示され、アプリ内でプロットされます。一方のプロットには元の table データが表示されます。もう一方のプロットは、まず同じ table データを表示し、その後ユーザーが table UI コンポーネントで値の編集や列の並べ替えを行うと更新されます。