table をサポートするプロット
多くのプロット関数では、table のデータを直接プロットできます。table を関数に最初の引数として渡し、続けてプロットする変数を渡します。table または timetable のいずれかを指定でき、多くの場合、同じ座標軸に複数のデータ セットをまとめてプロットできます。
以下の例では、関数 plot
および scatter
を使用して、table のデータをプロットする全体的なアプローチを示します。特定のプロット関数が table をサポートしているかどうかを確認するには、その関数のドキュメントを参照してください。
簡単なライン プロットの作成
3 つの変数を含む table を作成します。その table を関数 plot
に最初の引数として渡し、続けてプロットする変数の名前を渡します。ここでは、"x" 軸に変数 Input
、"y" 軸に変数 Output1
をプロットします。軸ラベルが変数名と一致していることに注意してください。
% Create a table Input = linspace(0,12)'; Output1 = sin(Input); Output2 = sin(Input/3); tbl = table(Input,Output1,Output2); % Plot the table variables plot(tbl,"Input","Output1")
複数のデータ セットをまとめてプロットするには、"x" 座標、"y" 座標、またはその両方について、table 変数名の string ベクトルを指定します。たとえば、変数 Output1
と Output2
を "y" 軸に一緒にプロットします。
"y" 座標は 2 つの異なる table 変数から取得されるため、"y" 軸ラベルについては内容が明確でなく、この軸ラベルは空白のままになります。ただし、凡例を追加すると、凡例の項目が対応する変数名に一致します。
plot(tbl,"Input",["Output1","Output2"]) legend
ライン プロットのカスタマイズ
table を使用してプロットした後にラインの外観をカスタマイズするには、LineStyle
プロパティと Color
プロパティを設定します。たとえば、timetable として weather.csv
を読み取り、変数 Temperature
を行時間に対してプロットします。Line
オブジェクトを p
として返すため、後でそのプロパティを設定できます。
メモ: このコードでは "x" 座標の変数を省略しています。"x" 座標を省略すると、"y" 座標が行インデックス (table の場合) または行時間 (timetable の場合) に対してプロットされます。
tbl = readtimetable("weather.csv"); p = plot(tbl,"Temperature");
ラインのスタイルを破線に変更し、色を紫の色調に変更します。
p.LineStyle = "--";
p.Color = [0.5 0 1];
散布図のカスタマイズ
table を使用してプロットした後、プロパティを設定して散布図のマーカーの外観をカスタマイズできます。たとえば、table として patients.xls
を読み取り、塗りつぶされたマーカーを使用して変数 Diastolic
を変数 Systolic
に対してプロットします。Scatter
オブジェクトを s
として返すため、後でそのプロパティを設定できます。
tbl = readtable("patients.xls"); s = scatter(tbl,"Systolic","Diastolic","filled");
マーカー記号を四角形に変更し、マーカーを薄い青の色調で塗りつぶし、マーカー サイズを 80
に変更します。
s.Marker = "sq";
s.MarkerFaceColor = [0.5 0.7 1];
s.SizeData = 80;
マーカーの色と透明度を table 変数に従って変えることもできます。たとえば、MarkerFaceColor
プロパティを "flat"
に設定して ColorVariable
プロパティを "Age"
に設定し、変数 Age
に従って色を変えます。
MarkerFaceAlpha
プロパティを "flat"
に設定して AlphaVariable
プロパティを "Weight"
に設定し、変数 Weight
に従って色を変えます。
% Vary the colors s.MarkerFaceColor = "flat"; s.ColorVariable = "Age"; % Vary the transparency s.MarkerFaceAlpha = "flat"; s.AlphaVariable = "Weight";
table の変更によるプロットの更新
プロット関数に table を渡すと、table のコピーがプロット オブジェクトの SourceTable
プロパティに格納されます。そのプロパティに格納されている table の内容を変更すると、プロットが自動的に更新されて変更が反映されます。(ただし、ワークスペースで table に変更を加えた場合、それらの変更はプロットに反映されません。)
たとえば、table として patients.xls
を読み取り、変数 Weight
を変数 Height
に対してプロットします。Scatter
オブジェクトを s
として返すため、後でそのプロパティにアクセスできます。
tbl = readtable("patients.xls"); s = scatter(tbl,"Height","Weight","filled");
table の値を変更するには、ドット表記を使用して Scatter
オブジェクトの SourceTable
プロパティの table を参照します。ここでは、変数 Weight
の最大値を調べ、その値を 300
に変更します。プロットは自動的に更新されます。
[~,idx] = max(s.SourceTable.Weight); s.SourceTable.Weight(idx) = 300;
table データとベクトル データの組み合わせ
table をサポートするプロットの多くでは、プロットの一部の特性を table 変数を使用して指定し、他の特性をベクトルまたは行列を使用して指定できます。たとえば、table の座標を使用して散布図を作成し、CData
プロパティをベクトル、RGB 3 成分、または RGB 3 成分の行列に設定してマーカーの色をカスタマイズできます。
たとえば、table のデータを使用して散布図を作成します。table として patients.xls
を読み取り、変数 Weight
を変数 Height
に対してプロットします。
tbl = readtable("patients.xls"); s = scatter(tbl,"Height","Weight","filled");
次に、プロットされた点の色をベクトルを使用して変更します。このように異なるソースのデータを組み合わせる場合、それぞれのベクトル、行列、table 変数のサイズは、作成するプロットと適合していなければなりません。ここでは、table の収縮期の値を拡張期の値で除算して bpratio
というベクトルを作成します。bpratio
は変数 Height
および Weight
と同じ table から派生するため、要素の数がそれらの変数と同じであり、このプロットと適合します。
CData
プロパティを bpratio
に設定して、それぞれの点に血圧比に従って色を付けます。さらに、カラー バーを追加します。
% Vary the color by blood pressure ratio bpratio = tbl.Systolic./tbl.Diastolic; s.CData = bpratio; % Add a colorbar colorbar
ベクトルまたは行列をプロットしてから、table 変数を使用してプロットを変更することもできます。プロットを作成した後、SourceTable
プロパティを設定し、table 関連の目的のプロパティを設定します。通常、table 関連のプロパティには、名前に Variable
という語が含まれています。たとえば、100 個の乱数から成る 2 つのベクトルをプロットします。
x = rand(100,1);
y = rand(100,1);
s = scatter(x,y,"filled");
マーカーの色が table 変数の値に従って変わるように変更します。table tbl
として patients.xls
を読み取ります。SourceTable
プロパティを設定し、table の変数 Age
に従ってマーカーの色を変えます。table の行の数が 100 で、プロットの点の数も 100 であるため、変数 Age
はプロットと適合します。さらに、プロットにカラー バーを追加します。
% Set source table and vary color by age s.SourceTable = tbl; s.ColorVariable = "Age"; % Add a colorbar colorbar
メモ: heatmap
などのスタンドアロンの可視化では、table データとベクトル データの組み合わせはサポートされません。
参考
関数
plot
|scatter
|table
|readtable
|readtimetable