Main Content

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

swarmchart3

3 次元粒子群散布図

    説明

    swarmchart3(x,y,z) は 3 次元粒子群チャートを表示します。これは、点が x 次元および y 次元でオフセットした (微変動した) 散布図です。点は特徴的な形状を形成し、それぞれの形状のアウトラインはバイオリン図に類似しています。3 次元粒子群チャートは、離散 (xy) データを z データの分布と共に可視化するのに役立ちます。それぞれの (xy) 位置で、点は z のカーネル密度推定に基づいて微変動します。

    swarmchart3(x,y,z,sz) はマーカーのサイズを指定します。すべてのマーカーを同じサイズでプロットするには、sz をスカラーとして指定します。マーカーをさまざまなサイズでプロットするには、szxy および z と同じサイズのベクトルとして指定します。

    swarmchart3(x,y,z,sz,c) はマーカーの色を指定します。すべてのマーカーを同じ色でプロットするには、c を 1 つの色名または RGB 3 成分として指定します。それぞれのマーカーに異なる色を割り当てるには、xy、および z と同じサイズのベクトルを指定します。または、RGB 3 成分の 3 列の行列を指定できます。行列の行数は xy および z の長さと一致していなければなりません。

    swarmchart3(___,mkr) は、既定のマーカー (円) とは異なるマーカーを指定します。前述の任意の構文で、すべての引数の後に mkr を指定します。

    swarmchart3(___,'filled') は、マーカーを塗りつぶします。前述の任意の構文で、すべての引数の後に 'filled' オプションを指定します。

    swarmchart3(___,Name,Value) は、1 つ以上の Name,Value ペア引数を使用して、粒子群チャートの追加のプロパティを指定します。プロパティは他のすべての入力引数の後に指定します。プロパティの一覧については、Scatter のプロパティ を参照してください。

    swarmchart3(ax,___) は、ターゲット座標軸に粒子群チャートを表示します。前述の任意の構文で、すべての引数の前に座標軸を指定します。

    s = swarmchart3(___) は、Scatter オブジェクトを返します。チャートのプロパティを作成後に変更するには、s を使用します。プロパティの一覧については、Scatter のプロパティ を参照してください。

    すべて折りたたむ

    tbl という名前の timetable に BicycleCounts.csv データセットを読み込みます。このデータセットには、ある期間の自転車の交通量データが含まれています。tbl の最初の 5 行を表示します。

    tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
    tbl(1:5,:)
    ans=5×5 table
             Timestamp              Day         Total    Westbound    Eastbound
        ___________________    _____________    _____    _________    _________
    
        2015-06-24 00:00:00    {'Wednesday'}     13          9            4    
        2015-06-24 01:00:00    {'Wednesday'}      3          3            0    
        2015-06-24 02:00:00    {'Wednesday'}      1          1            0    
        2015-06-24 03:00:00    {'Wednesday'}      1          1            0    
        2015-06-24 04:00:00    {'Wednesday'}      1          1            0    
    
    

    それぞれの観察値からの日の名前を使用してベクトル x を作成します。

    daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
    x = categorical(tbl.Day,daynames);

    table のそれぞれの観察値に従って値 "pm" または "am" を含むカテゴリカル ベクトル y を作成します。東向き交通量データのベクトル z を作成します。次に、xy および z の粒子群チャートを作成します。チャートは、週の昼間と夜間それぞれのデータの分布を示しています。

    ispm = tbl.Timestamp.Hour < 12;
    y = categorical;
    y(ispm) = "pm";
    y(~ispm) = "am";
    z= tbl.Eastbound;
    swarmchart3(x,y,z);

    ゼロと 1 の組み合わせとしてベクトル x を作成し、すべて 1 を含むベクトルとして y を作成します。乱数の二乗のベクトルとして z を作成します。次に xy、および z の粒子群チャートを作成し、マーカーのサイズを 5 に指定します。

    x = [zeros(1,500) ones(1,500)];
    y = ones(1,1000);
    z = randn(1,1000).^2;
    swarmchart3(x,y,z,5);

    ゼロと 1 の組み合わせとしてベクトル x を作成し、すべて 1 を含むベクトルとして y を作成します。乱数の二乗のベクトルとして z を作成します。次に xy、および z の粒子群チャートを作成し、点 ('.') マーカー記号を指定します。

    x = [zeros(1,500) ones(1,500)];
    y = ones(1,1000);
    z = randn(1,1000).^2;
    swarmchart3(x,y,z,'.');

    ゼロと 1 の組み合わせを含むベクトル x を作成し、1 と 2 のランダムな組み合わせを含む y を作成します。乱数の二乗のベクトルとして z を作成します。z の平方根としてベクトル c を作成して、マーカーの色を指定します。次に、xy および z の粒子群チャートを作成します。マーカーのサイズを 50 に設定し、色を c として指定します。c の値が figure のカラーマップにインデックス付けされます。'filled' オプションを使用して、マーカーを中空の円として表示するのではなく色で塗りつぶします。

    x = [zeros(1,500) ones(1,500)];
    y = randi(2,1,1000);
    z = randn(1,1000).^2;
    c = sqrt(z);
    swarmchart3(x,y,z,50,c,'filled');

    ゼロと 1 の組み合わせを含むベクトル x を作成し、1 ~ 4 のランダムな数の組み合わせを含む y を作成します。乱数の二乗のベクトルとして z を作成します。次に、Scatter オブジェクトを格納する戻り引数を使用して関数 swarmchart を呼び出し、xy、および z の粒子群チャートを作成します。x 軸と y 軸のラベルを追加して、それぞれの次元で jitter プロパティ変更の効果が確認できるようにします。

    x = [zeros(1,500) ones(1,500)];
    y = randi(4,1,1000);
    z = randn(1,1000).^2;
    s = swarmchart3(x,y,z);
    xlabel('X')
    ylabel('Y')

    Scatter オブジェクトの jitter プロパティを設定して、点のクラスターの形状を変更します。x 次元で、一様乱数ジッターを指定し、ジッター幅を 0.5 データ単位に変更します。y 次元で、正規乱数ジッターを指定し、ジッター幅を 0.1 データ単位に変更します。点の間隔は、指定するジッター幅を超えません。

    s.XJitter = 'rand';
    s.XJitterWidth = 0.5;
    s.YJitter = 'randn';
    s.YJitterWidth = 0.1;

    tbl という名前の timetable に BicycleCounts.csv データセットを読み込みます。このデータセットには、ある期間の自転車の交通量データが含まれています。tbl の最初の 5 行を表示します。

    tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
    tbl(1:5,:)
    ans=5×5 table
             Timestamp              Day         Total    Westbound    Eastbound
        ___________________    _____________    _____    _________    _________
    
        2015-06-24 00:00:00    {'Wednesday'}     13          9            4    
        2015-06-24 01:00:00    {'Wednesday'}      3          3            0    
        2015-06-24 02:00:00    {'Wednesday'}      1          1            0    
        2015-06-24 03:00:00    {'Wednesday'}      1          1            0    
        2015-06-24 04:00:00    {'Wednesday'}      1          1            0    
    
    

    それぞれの観察値の日の名前をもつベクトル x を作成します。table のそれぞれの観察値に従って値 "pm" または "am" を含むカテゴリカル ベクトル y を作成します。東向き交通量データのベクトルとして ze を定義し、西向き交通量データのベクトルとして zw を定義します。

    daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
    x = categorical(tbl.Day,daynames);
    ispm = tbl.Timestamp.Hour<12;
    y = categorical;
    y(ispm) = 'pm';
    y(~ispm) = 'am';
    ze = tbl.Eastbound;
    zw = tbl.Westbound;

    タイル表示チャート レイアウトを 'flow' タイル配置に作成して、座標軸がそのレイアウトの使用可能なスペースを塗りつぶすようにします。関数 nexttile を呼び出して axes オブジェクトを作成し、それを ax1 として返します。次に、関数 swarmchartax1 を渡して、東向きデータの粒子群チャートを作成します。

    tiledlayout('flow')
    ax1=nexttile;
    swarmchart3(ax1,x,y,ze,'.');

    同じプロセスを繰り返して 2 番目の axes オブジェクトと、西向き交通量の粒子群チャートを作成します。

    ax2 = nexttile;
    z = tbl.Westbound;
    swarmchart3(ax2,x,y,zw,'.');

    入力引数

    すべて折りたたむ

    x 座標。y および z と同じサイズの数値スカラーまたはベクトルとして指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

    y 座標。x および z と同じサイズの数値スカラーまたはベクトルとして指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

    z 座標。x および y と同じサイズの数値スカラーまたはベクトルとして指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | datetime | duration

    ポイント単位のマーカーのサイズ。次のいずれかの形式で指定します。

    • 数値スカラー — すべてのマーカーを同じサイズでプロットします。

    • 行ベクトルまたは列ベクトル — マーカーごとにサイズを変えます。sz の長さは、xy および z の長さと同じでなければなりません。

    • [] — 既定の 36 ポイントのサイズを使用します。

    マーカーの色。次のいずれかの形式で指定します。

    • RGB 3 成分または色名 — すべてのマーカーを同じ色でプロットします。RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。または、次の表から色名を指定できます。

    • RGB 3 成分から成る 3 列の行列 — マーカーごとに異なる色を使用します。行列の各行で対応するマーカーの色の RGB 3 成分を指定します。行数は xy および z の長さと等しくなければなりません。

    • ベクトル — それぞれのマーカーに異なる色を使用します。c の値が現在のカラーマップにインデックス付けされ、カラーマップの範囲全体をカバーします。c の長さは、xy および z の長さと同じでなければなりません。カラーマップを変更するには、関数 colormap を使用します。

    色名説明等価の RGB 3 成分
    'red' または 'r'[1 0 0]
    'green' または 'g'[0 1 0]
    'blue' または 'b'[0 0 1]
    'yellow' または 'y'[1 1 0]
    'magenta' または 'm'マゼンタ[1 0 1]
    'cyan' または 'c'シアン[0 1 1]
    'white' または 'w'[1 1 1]
    'black' または 'k'[0 0 0]

    マーカー タイプ。次の表に挙げる値のいずれかとして指定します。

    マーカー説明
    'o'
    '+'プラス記号
    '*'アスタリスク
    '.'
    'x'十字
    '_'水平線
    '|'垂直線
    's'正方形
    'd'菱形
    '^'上向き三角形
    'v'下向き三角形
    '>'右向き三角形
    '<'左向き三角形
    'p'星形五角形
    'h'星形六角形

    マーカーの内部を塗りつぶすオプション。'filled' として指定します。このオプションは、たとえば 'o''square' などの面があるマーカーに使用します。エッジのみを含む面のないマーカー ('+''*''.' および 'x') はまったくレンダリングされません。

    'filled' オプションは Scatter オブジェクトの MarkerFaceColor プロパティを 'flat' に、MarkerEdgeColor プロパティを 'none' に設定します。この場合、MATLAB® はマーカーのエッジを描画せず、面を描画します。

    ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定しない場合、MATLAB は現在の座標軸にプロットするか、存在しない場合は Axes オブジェクトを作成します。

    名前と値のペアの引数

    オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

    例: swarmchart3(randi(2,500,1),randi(2,500,1),randn(500,1),'MarkerFaceColor','red') は赤で塗りつぶされたマーカーを指定します。

    x 次元に沿ったジッターのタイプ (点の間隔)。次のいずれかの値として指定します。

    • 'none' — 点を微変動しない。

    • 'density' — 2 次元のチャートについて、y のカーネル密度推定を使用して点を微変動する。3 次元のチャートで 2 つの次元についてこのオプションを指定すると、点は 3 つ目の次元のカーネル密度推定に基づいて微変動します。たとえば、XJitterYJitter'density' に設定すると、z のカーネル密度推定が使用されます。

    • 'rand' — 一様分布で点をランダムに微変動する。

    • 'randn' — 正規分布で点をランダムに微変動する。

    x 次元に沿ったジッター (点の間のオフセット) の最大量。データ単位での非負のスカラー値として指定します。

    たとえば、隣接する点を結ぶ最短距離の 90% にジッター幅を設定するには、x の一意の値を結ぶ最短距離を取り、0.9 でスケーリングします。

    XJitterWidth = 0.9 * min(diff(unique(x)));

    y 次元に沿ったジッターのタイプ (点の間隔)。次のいずれかの値として指定します。

    • 'none' — 点を微変動しない。

    • 'density' — 2 次元のチャートについて、x のカーネル密度推定を使用して点を微変動する。3 次元のチャートで 2 つの次元についてこのオプションを指定すると、点は 3 つ目の次元のカーネル密度推定に基づいて微変動します。たとえば、XJitterYJitter'density' に設定すると、z のカーネル密度推定が使用されます。

    • 'rand' — 一様分布で点をランダムに微変動する。

    • 'randn' — 正規分布で点をランダムに微変動する。

    y 次元に沿ったジッター (点の間のオフセット) の最大量。データ単位での非負のスカラー値として指定します。

    たとえば、隣接する点を結ぶ最短距離の 90% にジッター幅を設定するには、y の一意の値を結ぶ最短距離を取り、0.9 でスケーリングします。

    YJitterWidth = 0.9 * min(diff(unique(y)));

    アルゴリズム

    粒子群チャートの点は、z のガウス カーネル密度推定と、それぞれの (xy) 位置での相対的な点の数によって重み付けされた一様分布する乱数値を使用して微変動します。この動作は、関数 swarmchart3 を呼び出すときの Scatter オブジェクトの XJitter プロパティと YJitter プロパティの既定の 'density' 設定に対応します。

    それぞれの x の位置での点の最大の広がりは、既定では、隣接する点を結ぶ最小距離の 90% です。たとえば、x 次元で、広がりは次のように計算されます。

    spread = 0.9 * min(diff(unique(x)));

    Scatter オブジェクトの XJitterWidth プロパティおよび YJitterWidth プロパティを設定して、オフセットを制御できます。

    参考

    関数

    プロパティ

    R2020b で導入