Main Content

swarmchart

粒子群散布図

R2020b 以降

  • Swarm chart

説明

ベクトルと行列のデータ

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

  • 1 つの点集合をプロットするには、x および y を等しい長さのベクトルとして指定します。

  • 同じ座標軸セットに複数の点集合をプロットするには、x または y のうちの少なくとも 1 つを行列として指定します。

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

swarmchart(x,y,sz,c) はマーカーの色を指定します。すべてのマーカーに 1 つの色を指定することも、色を変えることもできます。たとえば、c'red' として指定すると、すべての円を赤でプロットできます。

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

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

テーブル データ

swarmchart(tbl,xvar,yvar) は、table tbl の変数 xvar および yvar をプロットします。1 つのデータ セットをプロットするには、xvaryvar にそれぞれ 1 つの変数を指定します。複数のデータ セットをプロットするには、xvaryvar、またはその両方に複数の変数を指定します。両方の引数に複数の変数を指定する場合は、同数の変数を指定しなければなりません。

swarmchart(tbl,xvar,yvar,'filled') は、指定された変数をプロットし、マーカーを塗りつぶします。

追加オプション

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

swarmchart(___,Name,Value) は、1 つ以上の名前と値の引数を使用して、粒子群チャートの追加のプロパティを指定します。プロパティは他のすべての入力引数の後に指定します。以下に例を示します。

  • swarmchart(x,y,'LineWidth',2) は、マーカーの輪郭が 2 ポイントの粒子群チャートを作成します。

  • swarmchart(tbl,'MyX','MyY','ColorVariable','MyColors') は、table のデータから粒子群チャートを作成し、その table のデータを使用してマーカーの色をカスタマイズします。

  • swarmchart(x,y,'YJitter','density') は水平粒子群チャートを作成します。 (R2023b 以降)

プロパティの一覧については、Scatter のプロパティ を参照してください。

s = swarmchart(___)Scatter オブジェクトまたは 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)

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

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

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

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

tbl = readtable("BicycleCounts.csv");
tbl(1:5,:)
ans=5×5 table
         Timestamp               Day         Total    Westbound    Eastbound
    ____________________    _____________    _____    _________    _________

    24-Jun-2015 00:00:00    {'Wednesday'}     13          9            4    
    24-Jun-2015 01:00:00    {'Wednesday'}      3          3            0    
    24-Jun-2015 02:00:00    {'Wednesday'}      1          1            0    
    24-Jun-2015 03:00:00    {'Wednesday'}      1          1            0    
    24-Jun-2015 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,'.');

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

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

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

tbl = readtable("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');

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

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

tbl = readtable("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);

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

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

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

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

R2023b 以降

関数 swarmchart を呼び出すときに YJitter プロパティを設定することで、水平粒子群チャートを作成できます。

たとえば、500 個の数字から成る 3 つの正規分布および町名の categorical ベクトルを作成します。次に、関数 swarmchart を呼び出して名前と値の引数 YJitter を指定することで、データの水平粒子群チャートを作成します。

x = randn(500,3) + [1 4 6];
towns = categorical(["Stowe" "Wayland" "Natick"]);
y = repmat(towns,500,1);
swarmchart(x,y,YJitter="density")

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

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)

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

table のデータをプロットするには、table を関数 swarmchart に渡してプロット対象の変数を指定すると便利です。たとえば、3 つの乱数の変数をもつ table を作成し、変数 X および Y1 をプロットします。既定では、軸ラベルは変数名と一致します。

tbl = table(randi(2,100,1),randn(100,1),randn(100,1)+10, ...
   'VariableNames',{'X','Y1','Y2'});

swarmchart(tbl,'X','Y1')

Figure contains an axes object. The axes object with xlabel X, ylabel Y1 contains an object of type scatter.

また、複数の変数を同時にプロットできます。たとえば、yvar 引数を cell 配列 {'Y1','Y2'} として指定することにより、変数 Y1 および Y2"y" 軸にプロットします。次に、凡例を追加します。凡例ラベルは変数名と一致します。

swarmchart(tbl,'X',{'Y1','Y2'})
legend

Figure contains an axes object. The axes object with xlabel X contains 2 objects of type scatter.

table のデータをプロットして色とマーカー サイズをカスタマイズする方法の 1 つとして、ColorVariable プロパティと SizeData プロパティを設定する方法があります。これらのプロパティは、関数 swarmchart を呼び出すときに名前と値の引数として設定するか、後で Scatter オブジェクトに対して設定できます。

たとえば、3 つの乱数の変数をもつ table を作成し、変数 X および Y を塗りつぶされたマーカーでプロットします。名前と値の引数 ColorVariable を指定してマーカーの色を変更します。Scatter オブジェクトを s として返すため、後で他のプロパティを設定できます。

tbl = table(randi(2,100,1),randn(100,1),randn(100,1), ...
   'VariableNames',{'X','Y','Colors'});

s = swarmchart(tbl,'X','Y','filled','ColorVariable','Colors');

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type scatter.

SizeData プロパティを設定してマーカー サイズを 100 ポイントに変更します。

s.SizeData = 100;

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type scatter.

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

tbl = readtable("BicycleCounts.csv");
tbl(1:5,:)
ans=5×5 table
         Timestamp               Day         Total    Westbound    Eastbound
    ____________________    _____________    _____    _________    _________

    24-Jun-2015 00:00:00    {'Wednesday'}     13          9            4    
    24-Jun-2015 01:00:00    {'Wednesday'}      3          3            0    
    24-Jun-2015 02:00:00    {'Wednesday'}      1          1            0    
    24-Jun-2015 03:00:00    {'Wednesday'}      1          1            0    
    24-Jun-2015 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,'.')

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

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

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

Figure contains 2 axes objects. Axes object 1 contains an object of type scatter. Axes object 2 contains an object of type scatter.

入力引数

すべて折りたたむ

x 座標。スカラー、ベクトルまたは行列として指定します。x のサイズと形状はデータの形状に依存します。次の表では、最も一般的な状況について説明します。

プロットのタイプ座標の指定方法
1 つの点

x および y をスカラーとして指定します。以下に例を示します。

swarmchart(1,1)

1 つの点集合

x および y を同じ長さの行ベクトルまたは列ベクトルの任意の組み合わせとして指定します。以下に例を示します。

x = randi(3,100,1);
y = randn(1,100);
swarmchart(x,y)

色が異なる複数の点集合

すべてのセットが同じ x 座標または y 座標を共有している場合は、共有している座標をベクトルとして、その他の座標を行列として指定します。ベクトルの長さは行列の次元の 1 つと一致していなければなりません。以下に例を示します。

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)
行列が正方の場合、swarmchart は行列の列ごとに別個の点のセットをプロットします。

または、xy をサイズが等しい行列として指定します。この場合、swarmcharty の各列を、対応する x の列に対してプロットします。以下に例を示します。

x = randi(2,100,2);
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)

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

y 座標。スカラー、ベクトルまたは行列として指定します。y のサイズと形状はデータの形状に依存します。次の表では、最も一般的な状況について説明します。

プロットのタイプ座標の指定方法
1 つの点

x および y をスカラーとして指定します。以下に例を示します。

swarmchart(1,1)

1 つの点集合

x および y を同じ長さの行ベクトルまたは列ベクトルの任意の組み合わせとして指定します。以下に例を示します。

x = randi(3,100,1);
y = randn(1,100);
swarmchart(x,y)

色が異なる複数の点集合

すべてのセットが同じ x 座標または y 座標を共有している場合は、共有している座標をベクトルとして、その他の座標を行列として指定します。ベクトルの長さは行列の次元の 1 つと一致していなければなりません。以下に例を示します。

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)
行列が正方の場合、swarmchart は行列の列ごとに別個の点のセットをプロットします。

または、xy をサイズが等しい行列として指定します。この場合、swarmcharty の各列を、対応する x の列に対してプロットします。以下に例を示します。

x = randi(2,100,2);
y = [randn(100,1) randn(100,1)+5];
swarmchart(x,y,100)

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

マーカー サイズ。数値スカラー、ベクトル、行列、または空の配列 ([]) として指定します。サイズは各マーカーの平方ポイント単位の面積を制御します。空の行列は、既定の 36 ポイントのサイズを指定します。サイズを指定する方法は、xy の指定方法や目的のプロットの外観によって異なります。次の表では、最も一般的な状況について説明します。

目的のマーカー サイズxy sz

すべての点に同じサイズ

xy の説明にあるベクトルまたは行列の任意の有効な組み合わせ。

スカラー

x をベクトル、y を行列、sz をスカラーとして指定します。

x = randi(2,1,100); 
y = randn(100,1); 
swarmchart(x,y,100)

点ごとに異なるサイズ

同じ長さのベクトル

  • x および y と同じ長さのベクトル。

  • 少なくとも 1 つの次元が x および y の長さと一致する行列。行列を指定すると、それぞれの (x,y) の位置にサイズが異なる複数のマーカーを表示する場合に便利です。

xy、および sz をベクトルとして指定します。

x = randi(2,1,100); 
y = randn(100,1); 
sz = randi([70 2000],100,1);
swarmchart(x,y,sz)

xy をベクトル、sz を行列として指定します。

x = randi(2,1,100); 
y = randn(100,1); 
sz = randi([70 2000],100,2);
swarmchart(x,y,sz)

点ごとに異なるサイズ

複数のデータ セットをプロットする場合は x または y の少なくとも一方が行列

  • 各データ セットの点と同じ数の要素をもつベクトル。

  • x または y の行列と同じサイズの行列。

x をベクトル、y を行列、sz をベクトルとして指定します。

x = randi(2,1,100);
y = [randn(100,1) randn(100,1)+5];
sz = randi([70 2000],100,1);
swarmchart(x,y,sz)

x をベクトル、y を行列、szy と同じサイズの行列として指定します。

x = randi(2,1,100); 
y = [randn(100,1) randn(100,1)+5]; 
sz = randi([70 2000],100,2);
swarmchart(x,y,sz)

マーカーの色。色名、RGB 3 成分、RGB 3 成分の行列、またはカラーマップ インデックスのベクトルとして指定します。

  • 色名 — 'red' のような色名、または 'r' のような省略名。

  • RGB 3 成分 — 色の赤、緑、青成分の強度を指定する 3 要素の行ベクトル。強度値は [0,1] の範囲でなければなりません。たとえば [0.4 0.6 0.7] のようになります。RGB 3 成分は、カスタム色を作成するのに役立ちます。

  • RGB 3 成分の行列 — 各行が RGB 3 成分である 3 列の行列。

  • カラーマップ インデックスのベクトル — x および y のベクトルと同じ長さの数値のベクトル。

色を指定する方法は、目的の配色や 1 つの座標セットをプロットするか複数の座標セットをプロットするかによって異なります。次の表では、最も一般的な状況について説明します。

配色色の指定方法

すべての点に 1 つの色を使用する。

次の表のいずれかの色名または省略名を指定するか、1 つの RGB 3 成分を指定します。

1 つの点集合をプロットし、色を 'red' に指定します。

x = randi(2,1,100); 
y = randn(100,1); 
c = 'red';
swarmchart(x,y,[],c)

2 つの点集合をプロットし、RGB 3 成分を使用して色を赤に指定します。

x = randi(2,1,100); 
y = randn(100,1); 
c = [0.6 0 0.9];
swarmchart(x,y,[],c)

カラーマップを使用して各点に異なる色を割り当てる。

数値の行ベクトルまたは列ベクトルを指定します。数値は現在のカラーマップ配列にインデックスを付けます。最小値はカラーマップの最初の行にマッピングされ、最大値は最後の行にマッピングされます。中間の値は中間の行に線形にマッピングされます。

プロットに点が 3 つある場合、値が必ずカラーマップ インデックスとして解釈されるように列ベクトルを指定します。

この方法は、xy、および sz がいずれもベクトルである場合にのみ使用できます。

100 個のカラーマップ インデックスを指定するベクトル c を作成します。現在のカラーマップの色を使用して 100 個の点をプロットします。その後、カラーマップを winter に変更します。

x = randi(2,1,100); 
y = randn(100,1);
c = 1:100;
swarmchart(x,y,[],c)
colormap(gca,'winter')

点ごとにカスタム色を作成する。

m 行 3 列の RGB 3 成分の行列を指定します (m はプロットの点の数)。

この方法は、xy、および sz がいずれもベクトルである場合にのみ使用できます。

100 個のランダムな RGB 3 成分を指定する行列 c を作成します。次に、これらの色を使用して 100 個の点の粒子群チャートを作成します。

x = randi(2,1,100); 
y = randn(100,1); 
c = rand(100,3);
swarmchart(x,y,[],c)

データ セットごとに異なる色を作成する。

n 行 3 列の RGB 3 成分の行列を指定します (n はデータ セットの数)。

この方法は、xy、または sz の少なくとも 1 つが行列である場合にのみ使用できます。

2 つの RGB 3 成分を含む行列 c を作成します。その後、それらの色を使用して 2 つのデータ セットをプロットします。

x = randi(2,100,2); 
y = [randn(100,1) randn(100,1)+5]; 
c = [1 0 0; 0 0 1];
swarmchart(x,y,[],c)

一般的な色の色名と RGB 3 成分

色名省略名RGB 3 成分16 進数カラー コード外観
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

MATLAB® の多くのタイプのプロットで使用されている既定の色の RGB 3 成分および 16 進数カラー コードを次に示します。

RGB 3 成分16 進数カラー コード外観
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

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

マーカー説明結果のマーカー
"o"

Sample of circle marker

"+"プラス記号

Sample of plus sign marker

"*"アスタリスク

Sample of asterisk marker

"."

Sample of point marker

"x"十字

Sample of cross marker

"_"水平線

Sample of horizontal line marker

"|"垂直線

Sample of vertical line marker

"square"正方形

Sample of square marker

"diamond"菱形

Sample of diamond marker

"^"上向き三角形

Sample of upward-pointing triangle marker

"v"下向き三角形

Sample of downward-pointing triangle marker

">"右向き三角形

Sample of right-pointing triangle marker

"<"左向き三角形

Sample of left-pointing triangle marker

"pentagram"星形五角形

Sample of pentagram marker

"hexagram"星形六角形

Sample of hexagram marker

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

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

プロットするデータが含まれるソース table。table または timetable として指定します。

x 座標を含む table 変数。1 つ以上の table 変数インデックスとして指定します。

table インデックスの指定

以下のいずれかのインデックス方式を使用して、目的の変数を 1 つ以上指定します。

インデックス方式

変数名:

  • string、文字ベクトル、または cell 配列。

  • pattern オブジェクト。

  • "A" または 'A'A という名前の変数

  • ["A","B"] または {'A','B'}A および B という名前の 2 つの変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号。

  • 数値のベクトル。

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [2 3] — table の 2 番目と 3 番目の変数

  • [false false true] — 3 番目の変数

変数の型:

  • 指定した型の変数を選択する vartype 添字。

  • vartype("categorical") — categorical 値を含んでいるすべての変数

データのプロット

指定する table 変数には、数値または categorical 値を含めることができます。

1 つのデータ セットをプロットするには、xvaryvar にそれぞれ 1 つの変数を指定します。たとえば、正規分布の乱数値から成る 3 つの変数をもつ table を作成します。変数 X1 および Y をプロットします。

tbl = table(randn(100,1),randn(100,1)+10,randn(100,1), ...
   'VariableNames',{'X1','X2','Y'});
swarmchart(tbl,'X1','Y')

複数のデータ セットをまとめてプロットするには、xvaryvar、またはその両方に複数の変数を指定します。両方の引数に複数の変数を指定する場合、各引数に対する変数の数は同じでなければなりません。

たとえば、変数 X1 および X2 を x 軸にプロットし、変数 Y を y 軸にプロットします。

swarmchart(tbl,{'X1','X2'},'Y')

xvar および yvar に対して異なるインデックス方式も使用できます。たとえば、xvar を変数名として、yvar をインデックス番号として指定します。

swarmchart(tbl,'X1',3)

y 座標を含む table 変数。1 つ以上の table 変数インデックスとして指定します。

table インデックスの指定

以下のいずれかのインデックス方式を使用して、目的の変数を 1 つ以上指定します。

インデックス方式

変数名:

  • string、文字ベクトル、または cell 配列。

  • pattern オブジェクト。

  • "A" または 'A'A という名前の変数

  • ["A","B"] または {'A','B'}A および B という名前の 2 つの変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号。

  • 数値のベクトル。

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [2 3] — table の 2 番目と 3 番目の変数

  • [false false true] — 3 番目の変数

変数の型:

  • 指定した型の変数を選択する vartype 添字。

  • vartype("categorical") — categorical 値を含んでいるすべての変数

データのプロット

指定する table 変数には、数値、categorical 値、datetime 値、または duration 値を含めることができます。

1 つのデータ セットをプロットするには、xvaryvar にそれぞれ 1 つの変数を指定します。たとえば、正規分布の乱数値から成る 3 つの変数をもつ table を作成します。変数 X1 および Y をプロットします。

tbl = table(randn(100,1),randn(100,1)+10,randn(100,1), ...
   'VariableNames',{'X1','X2','Y'});
swarmchart(tbl,'X1','Y')

複数のデータ セットをまとめてプロットするには、xvaryvar、またはその両方に複数の変数を指定します。両方の引数に複数の変数を指定する場合、各引数に対する変数の数は同じでなければなりません。

たとえば、変数 X1 および X2 を x 軸にプロットし、変数 Y を y 軸にプロットします。

swarmchart(tbl,{'X1','X2'},'Y')

xvar および yvar に対して異なるインデックス方式も使用できます。たとえば、xvar を変数名として、yvar をインデックス番号として指定します。

swarmchart(tbl,'X1',3)

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

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: 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)));

カラー データを含む table 変数。ソース table の変数インデックスとして指定します。

table インデックスの指定

以下のいずれかのインデックス方式を使用して、目的の変数を指定します。

インデックス方式

変数名:

  • string スカラーまたは文字ベクトル。

  • pattern オブジェクト。pattern オブジェクトは 1 つの変数のみを参照しなければなりません。

  • "A" または 'A'A という名前の変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号。

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [false false true] — 3 番目の変数

変数の型:

  • 指定したタイプの table 変数を選択する vartype 添字。添字は 1 つの変数のみを参照しなければなりません。

  • vartype("double") — double 値を含んでいる変数

カラー データの指定

ColorVariable プロパティを指定して、マーカーの色を制御します。MarkerFaceColor プロパティが "flat" に設定されている場合は、変数のデータによってマーカーの塗りつぶし色を制御します。MarkerEdgeColor"flat" に設定されている場合は、このデータによってマーカーの輪郭の色も制御できます。

指定する table 変数には、任意の数値型の値を含めることができます。値は、次のいずれかの形式にできます。

  • 現在のカラーマップに線形にマッピングされる数値の列。

  • RGB 3 成分の 3 列配列。RGB 3 成分は、各値が特定の色の赤、緑、青成分の強度を指定する 3 要素ベクトルです。強度値は [0,1] の範囲でなければなりません。たとえば、[0.5 0.7 1] では薄い青の色調が指定されます。

ColorVariable プロパティを設定すると、MATLAB は CData プロパティを更新します。

アルゴリズム

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

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

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

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

水平粒子群チャートは同じアルゴリズムを使用して微変動しますが、点は x のガウス カーネル密度推定を使用して y 次元に沿って微変動します。この場合、YJitterWidth プロパティを使用して広がりを制御します。

バージョン履歴

R2020b で導入

すべて展開する