メインコンテンツ

violinplot

バイオリン図

R2024b 以降

    説明

    ベクトルと行列のデータ

    violinplot(ydata) は、行列 ydata の各列に バイオリン図 を作成します。ydata がベクトルの場合、violinplot は単一のバイオリン図を作成します。

    violinplot(xgroupdata,ydata)xgroupdata の一意の値に従って ydata のデータをグループ化し、データの各グループを個別のバイオリン図としてプロットします。xgroupdata は各バイオリン図の x 軸上の位置を決定します。

    violinplot(___,GroupByColor=cgroupdata) は、色を使用してバイオリン図を区別します。この関数では、xgroupdata (指定している場合) と cgroupdata の一意の値の組み合わせに従って ydata のデータをグループ化し、データの各グループを個別のバイオリン図としてプロットします。次にベクトル cgroupdata は、各バイオリン図の色を決定します。ydata はベクトルでなければならず、cgroupdataydata と同じ長さでなければなりません。色のグループ化データの名前と値のペアの引数は、前述した構文における任意の入力引数の組み合わせの後に指定します。

    violinplot(EvaluationPoints=evalPts,DensityValues=densVals) は、値 densVals と確率密度関数 (pdf) の評価点 evalPts を使用してバイオリン図を作成します。

    テーブル データ

    violinplot(tbl,yvar) は、tbl テーブルから yvar の変数ごとにバイオリン図を作成します。 (R2025a 以降)

    violinplot(tbl,xvar,yvar) は、xvar のデータによってグループ化された yvar のデータのバイオリン図を作成します。ここで、xvaryvartbl テーブルの変数です。1 つのデータ セットをプロットするには、xvaryvar にそれぞれ 1 つの変数を指定します。複数のデータ セットをプロットするには、xvaryvar、またはその両方に複数の変数を指定します。両方の引数に複数の変数を指定する場合は、同数の変数を指定しなければなりません。

    追加オプション

    violinplot(___,Name=Value) は、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、プロットするバイオリン図の方向や半分の領域を指定できます。

    violinplot(ax,___) は、現在の座標軸 (gca) の代わりに ax によって指定される座標軸にプロットします。ax 引数は、前述の構文における任意の入力引数の組み合わせの前で指定できます。

    v = violinplot(___) は、ViolinPlot オブジェクト、または ViolinPlot オブジェクトのベクトルを返します。v を使用して、バイオリン図の作成後にそのプロパティを設定します。プロパティの一覧については、ViolinPlot Properties を参照してください。

    すべて折りたたむ

    患者の年齢のベクトルから単一のバイオリン図を作成します。バイオリン図を使用して年齢の分布を分析します。

    patients データ セットを読み込みます。Age ベクトルには患者 100 名の年齢が含まれています。バイオリン図を作成して、年齢の分布を可視化します。

    load patients
    violinplot(Age)
    ylabel("Age (years)")

    Figure contains an axes object. The axes object with ylabel Age (years) contains an object of type violinplot.

    バイオリン図の外形は、確率密度関数のカーネル密度推定 (kde) によって決まります。kde は縦軸の 40 付近にピークをもつ鐘形の分布になります。このプロットが示すように、Age のデータはほぼ正規分布しており、患者の年齢の中央値は 40 付近になっています。

    正規分布した乱数から成る行列を生成します。行列の各列のデータに対してバイオリン図を作成します。

    ydata = randn(100,3);
    violinplot(ydata)

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

    3 つのバイオリン図には、それぞれグループ ラベル 1、2、および 3 が付けられます。データの乱数性のため、バイオリン図の形状はやや異なります。ただし、いずれのバイオリン図も正規分布特有の鐘形の形状を示します。

    R2025a 以降

    津波データ セットをテーブルに読み込みます。Longitude 変数と Latitude 変数のバイオリン図を作成します。

    T = readtable('tsunamis.xlsx');
    violinplot(T,["Longitude","Latitude"])

    Figure contains an axes object. The axes object contains 2 objects of type violinplot.

    3 つのバイオリン図には、それぞれグループ ラベル 1、2、および 3 が付けられます。

    正規分布する乱数のベクトルを生成し、グループ化データのベクトルを作成します。

    ydata = randn(100,1);
    xgroupdata = categorical(repelem(["group1";"group2";"group3"],[20,50,30]));

    xgroupdata の一意の値でグループ化された ydata のデータに対してバイオリン図のセットを作成します。図内の各バイオリン図は、xgroupdata の一意の値に対応します。

    violinplot(xgroupdata,ydata)

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

    正規分布データの 2 つのベクトルと、グループ化データの 3 つのベクトルを生成します。

    ydata1 = randn(100,1);
    ydata2 = randn(100,1)+5;
    
    xgroupdata1 = categorical(repelem(["group1";"group2"],[90,10]));
    xgroupdata2 = categorical(repelem(["group1";"group2"],[10,90]));
    xgroupdata3 = categorical(repelem(["group3";"group4"],[25,75]));

    変数 ydata1 と変数 ydata2 には、それぞれ平均が 05 の正規分布データが含まれています。xgroupdata1xgroupdata2 には、同じグループ ラベルの異なる並び順が含まれています。xgroupdata3 には、xgroupdata1xgroupdata2 とは異なるグループ ラベルが含まれています。

    サンプル データとグループ化データから table を作成します。

    tbl = table(xgroupdata1,xgroupdata2,xgroupdata3, ...
        ydata1,ydata2,VariableNames=["X1","X2","X3","Y1","Y2"]);

    xgroupdata1xgroupdata2 でグループ化された ydata1 のデータを使用して、重ね合わせたバイオリン図のセットを作成します。

    violinplot(tbl,["X1","X2"],"Y1")

    Figure contains an axes object. The axes object with ylabel Y1 contains 2 objects of type violinplot.

    この図には、重ね合わせたバイオリン図が 2 組示されています。青のバイオリン図は xgroupdata1 でグループ化された ydata1 のデータを表し、オレンジのバイオリン図は xgroupdata2 でグループ化された同じデータを表します。重ね合わせたプロットから、異なるグループ化が各グループの中央値に大きな変化をもたらしていないことがわかります。ただし、異なるグループ化は、各グループに対応するバイオリン図の形状に明確な影響を与えています。この結果から、各グループ内のデータの分布はデータのグループ化方法によって影響を受けることが示唆されます。

    xgroupdata1 でグループ化された ydata1 のデータと、xgroupdata3 でグループ化された ydata2 データを使用して、別のバイオリン図のセットを作成します。

    violinplot(tbl,["X1","X3"],["Y1","Y2"])

    Figure contains an axes object. The axes object contains 2 objects of type violinplot.

    グループ 1 および 2 に対応する青のプロットは ydata1 のデータを表し、グループ 3 および 4 に対応するオレンジのプロットは ydata2 のデータを表します。このプロットが示すように、グループ 3 および 4 のデータの中央値はグループ 1 および 2 の中央値よりも大きくなっています。

    正規分布した乱数から成るベクトルを生成します。位置および色のグループ化データ用のベクトルを 2 つ作成します。

    ydata = randn(100,1);
    
    xgroupdata = categorical(repelem(["group1";"group2";"group3"],[20;50;30]));
    cgroupdata = categorical(repelem(["a";"b";"a";"b";"c";"d";"e"],[10;10;25;25;10;10;10]));

    変数 ydata には、平均が 0 の正規分布データが含まれています。xgroupdata には、3 つの異なるグループのラベルが含まれています。cgroupdata のラベルは、xgroupdata の最初の 2 つのグループを同じ 2 つの色に分割し、xgroupdata の 3 番目のグループを 3 つの異なる色に分割します。

    xgroupdata を位置のグループ化データとして、cgroupdata を色のグループ化データとして使用し、ydata のデータをプロットします。

    violinplot(xgroupdata,ydata,GroupByColor=cgroupdata)

    Figure contains an axes object. The axes object contains 5 objects of type violinplot.

    この図には、バイオリン図のセットが xgroupdata の 3 つのグループ ラベルごとに示されています。グループ 1 とグループ 2 のセットには、それぞれオレンジと青のバイオリン図が含まれています。グループ 3 のバイオリン図のセットには、黄、紫、緑のバイオリン図が含まれています。

    乱数のベクトルを生成します。データのカーネル密度推定 (kde) を計算して pdf を推定します。

    ydata = [randn(100,1); 6+2*randn(100,1)];
    [f,xf] = kde(ydata,Bandwidth=0.6);

    f には kde の値が含まれ、xf には対応する評価点が含まれます。

    f を密度値として、xf を評価点として使用し、バイオリン図を作成します。バイオリン図の形状が示すように、データは二峰性の特性を持っています。

    violinplot(EvaluationPoints=xf,DensityValues=f)

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

    ランダムに生成されたデータの 2 つのベクトルを作成します。位置のグループ化データの 2 つのベクトルを作成します。

    ydata1 = randn(100,1);
    ydata2 = [randn(25,1)+2;randn(75,1)+5];
    
    xgroupdata1 = repelem([1;2],[50;50]);
    xgroupdata2 = repelem([1;2],[25;75]);;

    変数 ydata1 と変数 ydata2 にはランダムに生成されたデータが含まれています。xgroupdata1xgroupdata2 には、同じ 2 つのグループ ラベルの異なる並び順が含まれています。

    xgroupdata1 のラベルでグループ化された ydata1 のデータと、xgroupdata2 のラベルでグループ化された ydata2 のデータを比較します。グループごとに、上半分に表された ydata1 のデータと下半分に表された ydata2 のデータで水平方向のバイオリン図を作成します。

    violinplot(xgroupdata1,ydata1,Orientation="horizontal",DensityDirection="positive")
    hold on
    violinplot(xgroupdata2,ydata2,Orientation="horizontal",DensityDirection="negative")
    legend("ydata1","ydata2")

    Figure contains an axes object. The axes object contains 2 objects of type violinplot. These objects represent ydata1, ydata2.

    このバイオリン図が示すように、各グループで ydata1ydata2 のデータはほぼ正規分布しており、ydata1 のデータの平均は ydata2 のデータの平均よりも小さいことがわかります。さらに、ydata2 のデータでは、グループ 2 の平均はグループ 1 の平均よりも大きいことがわかります。

    喫煙者と非喫煙者の血圧を比較するために、患者データからバイオリン図を作成します。プロットから、喫煙者の方が非喫煙者よりも収縮期と拡張期の血圧が高いことがわかります。

    patients データ セットを読み込みます。Smoker を、説明的なカテゴリ名 (10 ではなく、SmokerNonsmoker) をもつ変数 categorical に変換します。

    load patients
    Smoker = categorical(Smoker,logical([1 0]),["Smoker","Nonsmoker"]);

    関数 tiledlayout を使用して、1 行 2 列のタイル表示チャート レイアウトを作成します。nexttile 関数を呼び出して、最初の座標軸 ax1 のセットを作成します。1 番目の座標軸のセットには、喫煙者と非喫煙者に対する収縮期血圧値を表す 2 つのバイオリン図が表示されます。関数 nexttile を呼び出して、タイル表示チャート レイアウト内で座標軸 ax2 の 2 番目のセットを作成します。座標軸の 2 番目のセットで、拡張期血圧値について同じ操作を実行します。

    tiledlayout(1,2)
    
    % Left axes
    ax1 = nexttile;
    violinplot(ax1,Systolic,GroupByColor=Smoker)
    ylabel(ax1,'Systolic Blood Pressure')
    legend("Smoker","Nonsmoker")
    
    % Right axes
    ax2 = nexttile;
    violinplot(ax2,Diastolic,GroupByColor=Smoker)
    ylabel(ax2,"Diastolic Blood Pressure")
    legend("Smoker","Nonsmoker")

    Figure contains 2 axes objects. Axes object 1 with ylabel Systolic Blood Pressure contains 2 objects of type violinplot. These objects represent Smoker, Nonsmoker. Axes object 2 with ylabel Diastolic Blood Pressure contains 2 objects of type violinplot. These objects represent Smoker, Nonsmoker.

    patients データセットを読み込み、Smoker 変数を categorical に変換します。

    load patients
    Smoker = categorical(Smoker,logical([1 0]),["Smoker","Nonsmoker"]);

    変数 Diastolic と変数 Smoker には、患者の拡張期血圧と喫煙状況のデータが含まれています。

    Smoker でグループ化された Diastolic のデータに対してバイオリン図のセットを作成します。

    v = violinplot(Diastolic,GroupByColor=Smoker)
    v = 
      1×2 ViolinPlot array:
    
        ViolinPlot    ViolinPlot
    
    

    v は、2 つの ViolinPlot オブジェクトを含む配列です。vViolinPlot オブジェクトのプロパティを指定することにより、バイオリン図を変更できます。詳細については、ViolinPlot Propertiesを参照してください。

    バイオリン図の色を更新し、喫煙者のプロットをピンク、非喫煙者のプロットを緑にします。

    v(1).FaceColor = [1 0 1]; % Pink
    v(2).FaceColor = [0 1 0]; % Green
    legend("Smoker","Nonsmoker")

    Figure contains an axes object. The axes object contains 2 objects of type violinplot. These objects represent Smoker, Nonsmoker.

    入力引数

    すべて折りたたむ

    サンプル データ。数値ベクトルまたは行列として指定します。

    • ydata が行列の場合、violinplotydata の列ごとにバイオリン図を作成します。

    • ydata がベクトルで、xgroupdata または cgroupdata を指定しない場合、violinplot は単一のバイオリン図を作成します。

    • ydata がベクトルで、xgroupdata または cgroupdata を指定する場合、violinplotxgroupdatacgroupdata の一意の値の組み合わせごとにバイオリン図を作成します。

    データ型: single | double

    位置のグループ化データ。数値ベクトルまたは categorical ベクトル、あるいは数値行列または categorical 行列として指定します。

    ydata が長さ n のベクトルの場合、xgroupdata は長さ n のベクトルまたは n 行の行列でなければなりません。

    ydata が行列の場合、xgroupdata は同じサイズの行列であるか、または ydata の行数または列数と等しい長さのベクトルでなければなりません。

    violinplotxgroupdata および cgroupdata の一意の値の組み合わせに従って ydata のデータをグループ化し、グループごとにバイオリン図を作成します。通常の設定では、violinplot は垂直方向にバイオリン図を配置し、x 軸上に xgroupdata 値を表示します。バイオリン図の方向は、Orientation プロパティを使用して変更できます。

    データ型: single | double | categorical

    色のグループ化データ。数値ベクトル、categorical ベクトル、logical ベクトル、string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。cgroupdata は、ベクトル ydata と同じ長さでなければなりません。ydata または xgroupdata が行列の場合、cgroupdata は指定できません。

    violinplotxgroupdata および cgroupdata の一意の値の組み合わせに従って ydata のデータをグループ化します。関数によってデータのグループごとにバイオリン図が作成され、同じ cgroupdata 値をもつグループに同じ色が割り当てられます。

    データ型: single | double | categorical | logical | string | char | cell

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

    位置のグループ化データを含む table 変数。1 つ以上の table 変数インデックスとして指定します。指定する table 変数には、数値、categorical 値、datetime 値、または duration 値を含める必要があります。

    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 値を含んでいるすべての変数

    データのプロット

    1 セットのバイオリン図をプロットするには、xvaryvar にそれぞれ 1 つの変数を指定します。たとえば、1 つの categorical グループ化変数と、正規分布の乱数値を含む 2 つの変数をもつ table を作成します。X のデータによってグループ化された Y1 のデータをプロットします。

    X = categorical(repelem(["a1";"b1"],50));
    Y1 = randn(100,1);
    Y2 = 5*randn(100,1)+10;
    tbl = table(X,Y1,Y2);
    
    violinplot(tbl,"X","Y1")

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

    たとえば、グループ化変数として X を使用して Y1 のデータからバイオリン図のセットを作成し、データとして Y2 を使用してバイオリン図のセットを作成します。

    violinplot(tbl,"X",["Y1","Y2"])

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

    violinplot(tbl,"X",3)

    サンプル データを含む table 変数。1 つ以上の table 変数インデックスとして指定します。指定する table 変数には、数値、categorical 値、datetime 値、または duration 値を含める必要があります。

    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 値を含んでいるすべての変数

    データのプロット

    1 セットのバイオリン図をプロットするには、xvaryvar にそれぞれ 1 つの変数を指定します。たとえば、2 つの categorical グループ化変数と、正規分布の乱数値を含む 1 つの変数をもつ table を作成します。X1 のデータによってグループ化された Y のデータをプロットします。

    X1 = categorical(repelem(["a1";"b1"],50));
    X2 = categorical(repelem(["a2";"b2";"c2"],[33,33,34]));
    Y = randn(100,1);
    tbl = table(X1,X2,Y);
    
    violinplot(tbl,"X1","Y")

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

    たとえば、グループ化変数として X1 を使用して Y のデータからバイオリン図のセットを作成し、グループ化変数として X2 を使用してバイオリン図のセットを作成します。

    violinplot(tbl,["X1","X2"],"Y")

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

    violinplot(tbl,"X1",3)

    確率密度関数 (pdf) の評価点。次のいずれかの値として指定します。

    • 数値ベクトル — evalPts の評価点と densVals の pdf 値を使用して、単一のバイオリン図を作成します。

    • 数値行列 — 複数のバイオリン図を作成します。各バイオリン図は、evalPts 列の評価点と、それに対応する densVals 列の pdf 値を表します。

    evalPts を指定する場合は、densVals も指定しなければならず、両者は同じサイズでなければなりません。

    データ型: single | double

    pdf の値。次のいずれかの値として指定します。

    • 数値ベクトル — evalPts の評価点と densVals の pdf 値を使用して、単一のバイオリン図を作成します。

    • 数値行列 — 複数のバイオリン図を作成します。各バイオリン図は、evalPts 列の評価点と、それに対応する densVals 列の pdf 値を表します。

    densVals を指定する場合は、evalPts も指定しなければならず、両者は同じサイズでなければなりません。

    データ型: single | double

    ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定しない場合、violinplot は現在の座標軸 (gca) を使用します。

    名前と値の引数

    すべて折りたたむ

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

    例: violinplot(ydata,Orientation="horizontal",DensityDirection="negative") は、ydata のデータを使用して、水平方向のバイオリン図の下半分をプロットします。

    メモ

    ここには一部の ViolinPlot のプロパティのみを示します。完全な一覧については、ViolinPlot Properties を参照してください。

    バイオリン図の最大幅。正のスカラーとして指定します。DensityWidthxgroupdata または xvar によって指定された位置のグループ化データと同じ単位をもちます。

    例: DensityWidth=0.5

    データ型: single | double

    バイオリン図の全体または片側をプロットします。次の表のいずれかの値として指定します。

    説明
    "both"バイオリン図の両側をプロットします。
    "positive"

    Orientation の名前と値の引数に応じて、バイオリン図の正の側をプロットします。

    • "vertical" — バイオリン図の右半分のみをプロットします。

    • "horizontal" — バイオリン図の上半分のみをプロットします。

    "negative"

    Orientation の名前と値の引数に応じて、バイオリン図の負の側をプロットします。

    • "vertical" — バイオリン図の左半分のみをプロットします。

    • "horizontal" — バイオリン図の下半分のみをプロットします。

    例: DensityDirection="negative"

    データ型: string | char

    バイオリン図を正規化するメソッド。次の表のいずれかの値として指定します。

    説明
    "area"バイオリン図の面積はすべて等しくなります。
    "width"バイオリン図の幅は DensityWidth と等しくなります。
    "count"バイオリン図の幅は各グループのデータ点数に比例します。

    例: DensityScale="count"

    データ型: string | char

    バイオリン図の方向。"vertical" または "horizontal" として指定します。通常の設定では、バイオリン図の方向は垂直であるため、バイオリン図は y 軸に沿って整列します。方向に関係なく、violinplot はサンプル データを ViolinPlot オブジェクトの YData プロパティに格納します。

    例: Orientation="horizontal"

    データ型: string | char

    R2025a 以降

    色グループのレイアウト。"grouped" または "overlaid" として指定します。既定では、それぞれの色のグループ化でバイオリン図は隣り合わせにプロットされます。

    ColorGroupLayout="overlaid" を指定する場合、次のようになります。

    • それぞれの色のグループ化でバイオリン図は重なり合ってプロットされます。

    • 関数は ColorGroupWidth の値を無視します。

    • DensityWidth を指定することで、重ね合わされた色のグループ化間の間隔を調整できます。

    データ型: string | char

    出力引数

    すべて折りたたむ

    バイオリン図。ViolinPlot オブジェクト、または ViolinPlot オブジェクトのベクトルとして返されます。

    • ydata を行列として指定した場合、violinplot は列ごとに 1 つのオブジェクトを返します。

    • tbl を指定した場合、violinplot は、xvar または yvar のうち、要素数が多い方のインデックスごとに 1 つのオブジェクトを返します。

    • cgroupdata を指定した場合、violinplot は、グループごとに 1 つのオブジェクトを返します。

    v を使用して、バイオリン図の作成後にそのプロパティを設定します。プロパティの一覧については、ViolinPlot Properties を参照してください。

    詳細

    すべて折りたたむ

    バージョン履歴

    R2024b で導入

    すべて展開する

    参考

    関数

    プロパティ