Main Content

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

swarmchart

    説明

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

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

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

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

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

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

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

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

    すべて折りたたむ

    x 座標軸のベクトルを作成し、関数 randn を使用して、y の正規分布の乱数値を生成します。次に、x および y の粒子群チャートを作成します。

    x = [ones(1,500) 2*ones(1,500) 3*ones(1,500)];
    y1 = 2 * randn(1,500);
    y2 = 3 * randn(1,500) + 5;
    y3 = 5 * randn(1,500) + 5;
    y = [y1 y2 y3];
    swarmchart(x,y)

    3 つのセットの x 座標と y 座標を作成します。関数 randn を使用して y の乱数値を生成します。

    x1 = ones(1,500);
    x2 = 2 * ones(1,500);
    x3 = 3 * ones(1,500);
    y1 = 2 * randn(1,500);
    y2 = [randn(1,250) randn(1,250) + 4];
    y3 = 5 * randn(1,500) + 5;

    最初のデータセットの粒子群チャートを作成し、5 の一様なマーカー サイズを指定します。次に hold on を呼び出して、2 番目と 3 番目のデータセットを最初のデータセットと共にプロットします。hold off を呼び出して座標軸のホールド状態を解放します。

    swarmchart(x1,y1,5)
    hold on
    swarmchart(x2,y2,5)
    swarmchart(x3,y3,5)
    hold off

    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 と、観察された自転車交通量をもつ別のベクトル y を作成します。次に、x および y の粒子群チャートを作成し、点マーカー ('.') を指定します。チャートは曜日による自転車交通量の分布を示しています。

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

    tbl という名前の timetable に BicycleCounts.csv データセットを読み込みます。それぞれの観察値からの日の名前をもつベクトル x と、観察された自転車交通量をもつ別のベクトル y、1 日のうちの時間をもつ 3 番目のベクトル c を作成します。

    次に、x および y の粒子群チャートを作成し、マーカー サイズを 20 に設定します。マーカーの色をベクトル c として指定します。ベクトルの値が Figure のカラーマップにインデックス付けされます。これにより、それぞれのデータ点について、色が時間に従って変化します。'filled' オプションを使用して、マーカーを中空の円として表示するのではなく色で塗りつぶします。

    tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
    daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
    x = categorical(tbl.Day,daynames);
    y = tbl.Total;
    c = hour(tbl.Timestamp);
    swarmchart(x,y,20,c,'filled');

    tbl という名前の timetable に BicycleCounts.csv データセットを読み込みます。それぞれの観察値からの日の名前をもつベクトル x と、観察された自転車交通量をもつ別のベクトル y、1 日のうちの時間をもつ 3 番目のベクトル c を作成します。次に、xy の粒子群チャートを作成し、マーカーのサイズを 5、マーカーの色をベクトル c として指定します。戻り引数 s を使用して関数 swarmchart を呼び出します。これにより、チャートを作成後に変更できます。

    tbl = readtable(fullfile(matlabroot,'examples','matlab','data','BicycleCounts.csv'));
    daynames = ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"];
    x = categorical(tbl.Day,daynames);
    y = tbl.Total;
    c = hour(tbl.Timestamp);
    s = swarmchart(x,y,5,c);

    クラスターの形状を x のそれぞれの位置で変更します。これにより、点が一様かつランダムに分布するようになり、間隔が 0.5 データ単位を超えないように制限されます。

    s.XJitter = 'rand';
    s.XJitterWidth = 0.5;

    x 座標と y 座標のペアを作成します。関数 randn を使用して y の乱数値を生成します。次に、面とエッジが共に 50% の透過性をもつ塗りつぶしマーカーを使用して粒子群チャートを作成します。

    x1 = ones(1,500);
    x2 = 2 * ones(1,500);
    x = [x1 x2];
    y1 = 2 * randn(1,500);
    y2 = [randn(1,250) randn(1,250) + 4];
    y = [y1 y2];
    swarmchart(x,y,'filled','MarkerFaceAlpha',0.5,'MarkerEdgeAlpha',0.5)

    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 の日の名前の categorical 配列として定義します。yEast および yWest を、東向きおよび西向きの自転車交通量カウントを含むベクトルとして定義します。

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

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

    tiledlayout('flow')
    ax1 = nexttile;
    y = tbl.Eastbound;
    swarmchart(ax1,x,y,'.');

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

    ax2 = nexttile;
    y = tbl.Westbound;
    s = swarmchart(ax2,x,y,'.');

    入力引数

    すべて折りたたむ

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

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

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

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

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

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

    • 行ベクトルまたは列ベクトル — マーカーごとにサイズを変えます。sz の長さは x および y の長さに等しくなければなりません。

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

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

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

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

    • ベクトル — それぞれのマーカーに異なる色を使用します。c の値が現在のカラーマップにインデックス付けされ、カラーマップの範囲全体をカバーします。c の長さは x および y の長さに等しくなければなりません。カラーマップを変更するには、関数 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 オブジェクト、PolarAxes オブジェクト、または GeographicAxes オブジェクトとして指定します。座標軸を指定しない場合、MATLAB は現在の座標軸にプロットするか、存在しない場合は Axes オブジェクトを作成します。

    名前と値のペアの引数

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

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

    メモ

    ここでは、プロパティの一部だけを紹介しています。完全な一覧については、Scatter のプロパティ を参照してください。

    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 のガウス カーネル密度推定と、それぞれの x の位置での相対的な点の数によって重み付けされた一様分布する乱数値を使用して微変動します。この動作は、関数 swarmchart を呼び出すときの Scatter オブジェクトの XJitter プロパティの既定の 'density' 設定に対応します。

    それぞれの x の位置での点の最大の広がりは、既定では、近傍の x 値間での最小距離の 90% です。

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

    この広がりは Scatter オブジェクトの XJitterWidth プロパティを設定することで制御できます。

    参考

    関数

    プロパティ

    R2020b で導入