violinplot
構文
説明
ベクトルと行列のデータ
violinplot( は xgroupdata,ydata)xgroupdata の一意の値に従って ydata のデータをグループ化し、データの各グループを個別のバイオリン図としてプロットします。xgroupdata は各バイオリン図の x 軸上の位置を決定します。
violinplot(___,GroupByColor= は、色を使用してバイオリン図を区別します。この関数では、cgroupdata)xgroupdata (指定している場合) と cgroupdata の一意の値の組み合わせに従って ydata のデータをグループ化し、データの各グループを個別のバイオリン図としてプロットします。次にベクトル cgroupdata は、各バイオリン図の色を決定します。ydata はベクトルでなければならず、cgroupdata は ydata と同じ長さでなければなりません。色のグループ化データの名前と値のペアの引数は、前述した構文における任意の入力引数の組み合わせの後に指定します。
テーブル データ
追加オプション
violinplot(___, は、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、プロットするバイオリン図の方向や半分の領域を指定できます。Name=Value)
は、v = violinplot(___)ViolinPlot オブジェクト、または ViolinPlot オブジェクトのベクトルを返します。v を使用して、バイオリン図の作成後にそのプロパティを設定します。プロパティの一覧については、ViolinPlot Properties を参照してください。
例
患者の年齢のベクトルから単一のバイオリン図を作成します。バイオリン図を使用して年齢の分布を分析します。
patients データ セットを読み込みます。Age ベクトルには患者 100 名の年齢が含まれています。バイオリン図を作成して、年齢の分布を可視化します。
load patients violinplot(Age) ylabel("Age (years)")

バイオリン図の外形は、確率密度関数のカーネル密度推定 (kde) によって決まります。kde は縦軸の 40 付近にピークをもつ鐘形の分布になります。このプロットが示すように、Age のデータはほぼ正規分布しており、患者の年齢の中央値は 40 付近になっています。
正規分布した乱数から成る行列を生成します。行列の各列のデータに対してバイオリン図を作成します。
ydata = randn(100,3); violinplot(ydata)

3 つのバイオリン図には、それぞれグループ ラベル 1、2、および 3 が付けられます。データの乱数性のため、バイオリン図の形状はやや異なります。ただし、いずれのバイオリン図も正規分布特有の鐘形の形状を示します。
R2025a 以降
津波データ セットをテーブルに読み込みます。Longitude 変数と Latitude 変数のバイオリン図を作成します。
T = readtable('tsunamis.xlsx'); violinplot(T,["Longitude","Latitude"])

3 つのバイオリン図には、それぞれグループ ラベル 1、2、および 3 が付けられます。
正規分布する乱数のベクトルを生成し、グループ化データのベクトルを作成します。
ydata = randn(100,1); xgroupdata = categorical(repelem(["group1";"group2";"group3"],[20,50,30]));
xgroupdata の一意の値でグループ化された ydata のデータに対してバイオリン図のセットを作成します。図内の各バイオリン図は、xgroupdata の一意の値に対応します。
violinplot(xgroupdata,ydata)

正規分布データの 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 には、それぞれ平均が 0 と 5 の正規分布データが含まれています。xgroupdata1 と xgroupdata2 には、同じグループ ラベルの異なる並び順が含まれています。xgroupdata3 には、xgroupdata1 と xgroupdata2 とは異なるグループ ラベルが含まれています。
サンプル データとグループ化データから table を作成します。
tbl = table(xgroupdata1,xgroupdata2,xgroupdata3, ... ydata1,ydata2,VariableNames=["X1","X2","X3","Y1","Y2"]);
xgroupdata1 と xgroupdata2 でグループ化された ydata1 のデータを使用して、重ね合わせたバイオリン図のセットを作成します。
violinplot(tbl,["X1","X2"],"Y1")

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

グループ 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)

この図には、バイオリン図のセットが 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)

ランダムに生成されたデータの 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 にはランダムに生成されたデータが含まれています。xgroupdata1 と xgroupdata2 には、同じ 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")

このバイオリン図が示すように、各グループで ydata1 と ydata2 のデータはほぼ正規分布しており、ydata1 のデータの平均は ydata2 のデータの平均よりも小さいことがわかります。さらに、ydata2 のデータでは、グループ 2 の平均はグループ 1 の平均よりも大きいことがわかります。
喫煙者と非喫煙者の血圧を比較するために、患者データからバイオリン図を作成します。プロットから、喫煙者の方が非喫煙者よりも収縮期と拡張期の血圧が高いことがわかります。
patients データ セットを読み込みます。Smoker を、説明的なカテゴリ名 (1 や 0 ではなく、Smoker や Nonsmoker) をもつ変数 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")

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 オブジェクトを含む配列です。v の ViolinPlot オブジェクトのプロパティを指定することにより、バイオリン図を変更できます。詳細については、ViolinPlot Propertiesを参照してください。
バイオリン図の色を更新し、喫煙者のプロットをピンク、非喫煙者のプロットを緑にします。
v(1).FaceColor = [1 0 1]; % Pink v(2).FaceColor = [0 1 0]; % Green legend("Smoker","Nonsmoker")

入力引数
サンプル データ。数値ベクトルまたは行列として指定します。
ydataが行列の場合、violinplotはydataの列ごとにバイオリン図を作成します。ydataがベクトルで、xgroupdataまたはcgroupdataを指定しない場合、violinplotは単一のバイオリン図を作成します。ydataがベクトルで、xgroupdataまたはcgroupdataを指定する場合、violinplotはxgroupdataとcgroupdataの一意の値の組み合わせごとにバイオリン図を作成します。
データ型: single | double
位置のグループ化データ。数値ベクトルまたは categorical ベクトル、あるいは数値行列または categorical 行列として指定します。
ydata が長さ n のベクトルの場合、xgroupdata は長さ n のベクトルまたは n 行の行列でなければなりません。
ydata が行列の場合、xgroupdata は同じサイズの行列であるか、または ydata の行数または列数と等しい長さのベクトルでなければなりません。
violinplot は xgroupdata および cgroupdata の一意の値の組み合わせに従って ydata のデータをグループ化し、グループごとにバイオリン図を作成します。通常の設定では、violinplot は垂直方向にバイオリン図を配置し、x 軸上に xgroupdata 値を表示します。バイオリン図の方向は、Orientation プロパティを使用して変更できます。
データ型: single | double | categorical
色のグループ化データ。数値ベクトル、categorical ベクトル、logical ベクトル、string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。cgroupdata は、ベクトル ydata と同じ長さでなければなりません。ydata または xgroupdata が行列の場合、cgroupdata は指定できません。
violinplot は xgroupdata および cgroupdata の一意の値の組み合わせに従って ydata のデータをグループ化します。関数によってデータのグループごとにバイオリン図が作成され、同じ cgroupdata 値をもつグループに同じ色が割り当てられます。
データ型: single | double | categorical | logical | string | char | cell
プロットするデータが含まれるソース table。table または timetable として指定します。
位置のグループ化データを含む table 変数。1 つ以上の table 変数インデックスとして指定します。指定する table 変数には、数値、categorical 値、datetime 値、または duration 値を含める必要があります。
table インデックスの指定
以下のいずれかのインデックス方式を使用して、目的の変数を 1 つ以上指定します。
| インデックス方式 | 例 |
|---|---|
変数名:
|
|
変数インデックス:
|
|
変数の型:
|
|
データのプロット
1 セットのバイオリン図をプロットするには、xvar と yvar にそれぞれ 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")
複数のデータ セットをまとめてプロットするには、xvar、yvar、またはその両方に複数の変数を指定します。両方の引数に複数の変数を指定する場合、各引数に対する変数の数は同じでなければなりません。
たとえば、グループ化変数として 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 つ以上指定します。
| インデックス方式 | 例 |
|---|---|
変数名:
|
|
変数インデックス:
|
|
変数の型:
|
|
データのプロット
1 セットのバイオリン図をプロットするには、xvar と yvar にそれぞれ 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")
複数のデータ セットをまとめてプロットするには、xvar、yvar、またはその両方に複数の変数を指定します。両方の引数に複数の変数を指定する場合、各引数に対する変数の数は同じでなければなりません。
たとえば、グループ化変数として 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 を参照してください。
バイオリン図の最大幅。正のスカラーとして指定します。DensityWidth は xgroupdata または xvar によって指定された位置のグループ化データと同じ単位をもちます。
例: DensityWidth=0.5
データ型: single | double
バイオリン図の全体または片側をプロットします。次の表のいずれかの値として指定します。
| 値 | 説明 |
|---|---|
"both" | バイオリン図の両側をプロットします。 |
"positive" |
|
"negative" |
|
例: 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 を参照してください。
詳細
バイオリン図は、データ サンプルの経験分布を視覚的に表現します。バイオリン図の形状は、確率密度関数 (pdf) のカーネル密度推定 (kde) を縦軸で反転させた形によって決まります。
バージョン履歴
R2024b で導入table および timetable のデータから、グループ化変数を指定せずにバイオリン図を作成できます。新しい構文 violinplot(tbl,yvar) を使用して、table tbl の yvar の変数からバイオリン図を作成します。
ベクトル入力データを指定する場合、位置のグループ化データを行列として指定できます。たとえば、構文 violinplot(xgroupdata,ydata) で、ydata が長さ n のベクトルの場合、xgroupdata を n 行の行列として指定できます。
以下の名前と値の引数を使用して、色グループの幅やレイアウトをカスタマイズできます。
ColorGroupWidth— バイオリン図の色のグループ化間の間隔を調整します。ColorGroupLayout— それぞれの色のグループ化でバイオリン図をグループ化するか重ね合わせるかを指定します。DensityWidth— 重ね合わせた色のグループ化間の間隔を調整します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)