Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

4 次元データの可視化

この例では、MATLAB® で 4 次元データを可視化する手法をいくつか示します。

1 つの離散変数による 4 次元データの可視化

データが、いくつかの離散値しかとらない変数をもつ場合があります。各離散グループのデータに対し、同じタイプの複数のプロットを作成できます。たとえば、関数 stem3 を使用して、4 番目の変数により母集団が離散グループに分割される場合の、3 つの変数の関係を確認します。

load patients Smoker Age Weight Systolic                           % load data

nsIdx = Smoker == 0;
smIdx = Smoker == 1;

figure
stem3(Age(nsIdx), Weight(nsIdx), Systolic(nsIdx), 'Color', 'b')    % stem plot for non-smokers
hold on
stem3(Age(smIdx), Weight(smIdx), Systolic(smIdx), 'Color', 'r')    % stem plot for smokers
hold off

view(-60,15)
zlim([100 140])

xlabel('Age')                                                      % add labels and a legend
ylabel('Weight') 
zlabel('Systolic Blood Pressure') 
legend('Non-Smoker', 'Smoker', 'Location', 'NorthWest')

Figure contains an axes. The axes contains 2 objects of type stem. These objects represent Non-Smoker, Smoker.

複数のプロットでの 4 次元データの可視化

大きなデータセットを使用して、個々の変数に相関関係があるかどうかを確認できます。関数 plotmatrix を使用して、プロットの nn 列の行列を作成し、変数間のペアごとの関係を表示できます。関数 plotmatrix は 2 つの出力を返します。最初の出力は、散布図で使用される line オブジェクトの行列です。2 番目の出力は、作成された axes オブジェクトの行列です。

関数 plotmatrix は、より高次のデータセットに使用することも可能です。

load patients Height Weight Diastolic Systolic    % load data

labels = {'Height' 'Weight' 'Diastolic' 'Systolic'};
data = [Height Weight Systolic Diastolic];

[h,ax] = plotmatrix(data);                        % create a 4 x 4 matrix of plots
for i = 1:4                                       % label the plots
  xlabel(ax(4,i), labels{i})
  ylabel(ax(i,1), labels{i})
end

MATLAB figure

3 変数の関数の可視化

各種 4 次元データでは、色を使用して 4 番目の次元を表すことができます。これは、3 変数の関数に対してうまく機能します。

たとえば、米国におけるハイウェイでの死亡事故件数を、経度と緯度、およびその場所が地方か都会かの関数として表します。プロットの xyz の値は、これら 3 つの変数を表します。色は、ハイウェイでの死亡事故の件数を表します。

cla
load accidents hwydata                             % load data

long = -hwydata(:,2);                              % longitude data
lat = hwydata(:,3);                                % latitude data
rural = 100 - hwydata(:,17);                       % percent rural data
fatalities = hwydata(:,11);                        % fatalities data

scatter3(long,lat,rural,40,fatalities,'filled')    % draw the scatter plot
ax = gca;
ax.XDir = 'reverse';
view(-31,14)
xlabel('W. Longitude')
ylabel('N. Latitude')
zlabel('% Rural Population')

cb = colorbar;                                     % create and label the colorbar
cb.Label.String = 'Fatalities per 100M vehicle-miles';

Figure contains an axes. The axes contains an object of type scatter.

ボリューム内のデータの可視化

データに、パイプ内の温度など、物理的対象物の測定値が含まれている場合があります。こうした場合、物理的次元をボリュームとして表現し、測定値の大きさを表すために色を使用できます。たとえば、関数 slice を使用して、ボリューム内の断面で測定された変数の値を示します。

load fluidtemp x y z temp                       % load data

xslice = [5 9.9];                               % define the cross sections to view
yslice = 3;
zslice = ([-3 0]);

slice(x, y, z, temp, xslice, yslice, zslice)    % display the slices
ylim([-3 3])
view(-34,24)

cb = colorbar;                                  % create and label the colorbar
cb.Label.String = 'Temperature, C';

Figure contains an axes. The axes contains 5 objects of type surface.

複素変数の関数のプロット

複素関数には、実数部と虚数部をもつ入力と、実数部と虚数部をもつ出力があります。色を伴う 3 次元プロットを使用して、複素関数を表すことができます。この場合、x 軸と y 軸は入力の実数部と虚数部を表します。z 軸は出力の実数部を表し、色は出力の虚数部を表します。

r = (0:0.025:1)';                        % create a matrix of complex inputs
theta = pi*(-1:0.05:1);
z = r*exp(1i*theta);
w = z.^3;                                % calculate the complex outputs

surf(real(z),imag(z),real(w),imag(w))    % visualize the complex function using surf
xlabel('Real(z)')
ylabel('Imag(z)')
zlabel('Real(w)')
cb = colorbar;
cb.Label.String = 'Imag(w)';

Figure contains an axes. The axes contains an object of type surface.