Main Content

parallelplot

平行座標プロットを作成

  • Parallel coordinates plot

説明

parallelplot(tbl) は、table tbl から平行座標プロットを作成します。プロット内の各ラインは table 内の 1 行を表し、プロット内の各座標変数は table 内の 1 列に対応します。ソフトウェアは table のすべての列を既定でプロットします。

parallelplot(tbl,'CoordinateVariables',coordvars) は、table tbl の変数 coordvars から平行座標プロットを作成します。

parallelplot(___,'GroupVariable',grpvar)grpvar によって指定された table 変数を使用して、プロット内のラインをグループ化します。このオプションは、前述の構文における任意の入力引数の組み合わせの後に指定します。

parallelplot(data) は、数値行列 data から平行座標プロットを作成します。

parallelplot(data,'CoordinateData',coorddata) は、行列 datacoorddata 列から平行座標プロットを作成します。

parallelplot(___,'GroupData',grpdata)grpdata のデータを使用して、プロット内のラインをグループ化します。このオプションは、数値行列データに関する前述した任意の入力引数の組み合わせの後に指定します。

parallelplot(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して追加のオプションを指定します。たとえば、数値を伴う座標のデータ正規化方式を指定できます。プロパティの一覧については、ParallelCoordinatesPlot のプロパティ を参照してください。

parallelplot(parent,___) は、parent で指定された Figure、パネル、またはタブに平行座標プロットを作成します。

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

すべて折りたたむ

医療患者データの table から平行座標プロットを作成します。

patients データセットを読み込み、ワークスペースに読み込んだ変数のサブセットから table を作成します。table を使用して平行座標プロットを作成します。プロット内のラインは個々の患者に対応します。プロットを使用して、データのトレンドを観察します。たとえば、プロットは、喫煙者の血圧値が高くなる傾向があることを示しています (最低血圧と最高血圧の両方)。

load patients
tbl = table(Diastolic,Smoker,Systolic);
p = parallelplot(tbl)

Figure contains an object of type parallelplot.

p = 
  ParallelCoordinatesPlot with properties:

            SourceTable: [100x3 table]
    CoordinateVariables: {'Diastolic'  'Smoker'  'Systolic'}
          GroupVariable: ''

  Use GET to show all properties

既定では、ソフトウェアはプロット ラインにランダムに微変動を起こし、座標ルーラーに沿って完全にオーバーラップすることがないようにします。プロット ラインをより簡単に区別できるようになるため、このジッターは categorical データを可視化するのに特に役立ちます。たとえば、Smoker 座標ルーラーに沿ってプロット ラインを観察すると、プロット ラインは true または false のいずれかの目盛りで重なっていません。

既定のジッターを無効にするには、Jitter プロパティを 0 に設定します。

p.Jitter = 0;

Figure contains an object of type parallelplot.

津波データの table から平行座標プロットを作成します。表示する table 変数とその順序を指定し、いずれかの変数に従ってプロット内のラインをグループ化します。

津波データをワークスペースに table として読み取ります。

tsunamis = readtable('tsunamis.xlsx');

table 内の変数のサブセットを使用して平行座標プロットを作成します。最初に、プロットでの過密状態を回避するために Figure ウィンドウのサイズを大きくします。次に、変数とその順序を指定するために、名前と値のペアの引数 'CoordinateVariables' を使用します。有効性に従って発生をグループ化するには、名前と値のペアの引数 'GroupVariable''Validity' に設定します。プロット内のラインは個々の津波の発生に対応します。プロットは、Validity 値をもつデータセット内の発生のほとんどが明らかな津波と考えられることを示しています。

figure('Units','normalized','Position',[0.3 0.3 0.45 0.4])
coordvars = {'Year','Validity','Cause','Country'};
p = parallelplot(tsunamis,'CoordinateVariables',coordvars,'GroupVariable','Validity');

Figure contains an object of type parallelplot.

医療患者データを含んでいる行列から平行座標プロットを作成します。行列内のいずれかの列にある値をビン化し、ビン化された値を使用してプロット内のラインをグループ化します。

patients データセットを読み込み、AgeHeight、および Weight の値から行列を作成します。行列データを使用して平行座標プロットを作成します。プロットの座標変数にラベルを付けます。プロット内のラインは個々の患者に対応します。

load patients
X = [Age Height Weight];
p = parallelplot(X)
p = 
  ParallelCoordinatesPlot with properties:

              Data: [100x3 double]
    CoordinateData: [1 2 3]
         GroupData: []

  Use GET to show all properties

p.CoordinateTickLabels = {'Age (years)','Height (inches)','Weight (pounds)'};

Figure contains an object of type parallelplot.

各患者を 3 つのカテゴリ (shortaverage、または tall) のうちの 1 つにグループ化する新しい categorical 変数を作成します。Height の最小値と最大値が含まれるようにビンのエッジを設定します。

min(Height)
ans = 60
max(Height)
ans = 72
binEdges = [60 64 68 72];
bins = {'short','average','tall'};
groupHeight = discretize(Height,binEdges,'categorical',bins);

ここで、groupHeight 値を使用して、平行座標プロットのラインをグループ化します。プロットは、short 患者の方が tall 患者よりも体重が軽い傾向があることを示しています。

p.GroupData = groupHeight;

Figure contains an object of type parallelplot.

医療患者データが含まれている行列から平行座標プロットを作成します。各プロットで、表示する行列の列を指定し、個別の変数に従ってプロット内のラインをグループ化します。

patients データセットを読み込み、ワークスペースに読み込んだ一部の変数から行列を作成します。

load patients
X = [Age Height Weight];

行列 X の列のサブセットを使用して、平行座標プロットを作成します。列とその順序を指定するには、名前と値のペアの引数 'CoordinateData' を使用します。Smoker 値を名前と値のペアの引数 'GroupData' に渡すことで、喫煙状況に従って患者をグループ化します。プロット内のラインは個々の患者に対応します。プロットは、喫煙状況と年齢または体重のいずれかの間に明白な関連がないことを示しています。

coorddata = [1 3];
p = parallelplot(X,'CoordinateData',coorddata,'GroupData',Smoker)
p = 
  ParallelCoordinatesPlot with properties:

              Data: [100x3 double]
    CoordinateData: [1 3]
         GroupData: [100x1 logical]

  Use GET to show all properties

p.CoordinateTickLabels = {'Age','Weight'};

Figure contains an object of type parallelplot.

X の列の異なるサブセットを使用して、別の平行座標プロットを作成します。性別に従って患者をグループ化します。プロットは、女性よりも男性の方が背が高く、体重が重いことを示しています。

coorddata2 = [2 3];
p2 = parallelplot(X,'CoordinateData',coorddata2,'GroupData',Gender)
p2 = 
  ParallelCoordinatesPlot with properties:

              Data: [100x3 double]
    CoordinateData: [2 3]
         GroupData: {100x1 cell}

  Use GET to show all properties

p2.CoordinateTickLabels = {'Height','Weight'};

Figure contains an object of type parallelplot.

停電データの table から平行座標プロットを作成します。数値の座標変数の正規化方式を変更します。

停電データをワークスペースに table として読み取ります。table の最初の数行を表示します。

outages = readtable('outages.csv');
head(outages)
       Region             OutageTime          Loss     Customers       RestorationTime              Cause       
    _____________    ____________________    ______    __________    ____________________    ___________________

    {'SouthWest'}    01-Feb-2002 12:18:00    458.98    1.8202e+06    07-Feb-2002 16:50:00    {'winter storm'   }
    {'SouthEast'}    23-Jan-2003 00:49:00    530.14    2.1204e+05                     NaT    {'winter storm'   }
    {'SouthEast'}    07-Feb-2003 21:15:00     289.4    1.4294e+05    17-Feb-2003 08:14:00    {'winter storm'   }
    {'West'     }    06-Apr-2004 05:44:00    434.81    3.4037e+05    06-Apr-2004 06:10:00    {'equipment fault'}
    {'MidWest'  }    16-Mar-2002 06:18:00    186.44    2.1275e+05    18-Mar-2002 23:23:00    {'severe storm'   }
    {'West'     }    18-Jun-2003 02:49:00         0             0    18-Jun-2003 10:54:00    {'attack'         }
    {'West'     }    20-Jun-2004 14:39:00    231.29           NaN    20-Jun-2004 19:16:00    {'equipment fault'}
    {'West'     }    06-Jun-2002 19:28:00    311.86           NaN    07-Jun-2002 00:51:00    {'equipment fault'}

各停電がどれくらい続いたかを示す OutageDuration と呼ばれる新しい変数を作成します。OutageDuration を各停電の継続日数に変換します。新しい変数を outages table に追加し、それを OutageDays と呼びます。

OutageDuration = outages.RestorationTime - outages.OutageTime;
outages.OutageDays = days(OutageDuration);

変数 Loss、変数 Customers、変数 OutageDays を使用して、平行座標プロットを作成します。座標変数は数値であるため、名前と値のペアの引数 'DataNormalization''Jitter' を使用して、値をジッターなしで z スコアとしてプロットに表示します。

coordvars = {'Loss','Customers','OutageDays'};
p = parallelplot(outages,'CoordinateVariables',coordvars,'DataNormalization','zscore','Jitter',0);

Figure contains an object of type parallelplot.

変数 OutageDays には、平均値 OutageDays から少なくとも標準偏差の 30 倍分離れた 1 つの値と、平均値から少なくとも標準偏差の 10 倍分離れたもう 1 つの値が含まれています。プロットの値にカーソルを合わせて、データ ヒントを表示します。各データ ヒントは、プロット内のラインに対応する table 内の行を示しています。

特定された極端な OutageDays 値をもつ行を outages table 内で見つけます。これら 2 つの停電の RestorationTime 値は疑わしいものであることに注意してください。

outliers = outages([1011 269],:)
outliers=2×7 table
       Region             OutageTime          Loss     Customers       RestorationTime              Cause            OutageDays
    _____________    ____________________    ______    __________    ____________________    ____________________    __________

    {'NorthEast'}    20-Aug-2009 02:46:00       NaN    1.7355e+05    18-Sep-2042 23:31:00    {'severe storm'    }       12083  
    {'MidWest'  }    07-Feb-2008 06:18:00    2378.7             0    14-Aug-2019 16:16:00    {'energy emergency'}      4206.4  

平行座標プロットを作成します。座標変数のいずれかのカテゴリを並べ替えます。

停電に関するデータを table としてワークスペースに読み取ります。

outages = readtable('outages.csv');

table 内の列のサブセットを使用して、平行座標プロットを作成します。停電の原因となったイベントに従って、プロット内のラインをグループ化します。

coordvars = [1 3 4 6];
p = parallelplot(outages,'CoordinateVariables',coordvars,'GroupVariable','Cause');

Figure contains an object of type parallelplot.

ソース table を更新することで、Cause でのイベントの順序を変更します。最初に、Cause を変数 categorical に変換し、イベントの新しい順序を指定し、関数 reordercats を使用して orderCause と呼ばれる新しい変数を作成します。次に、プロットのソース table において、元の変数 Cause を新しい変数 orderCause で置き換えます。

categoricalCause = categorical(p.SourceTable.Cause);
newOrder = {'attack','earthquake','energy emergency','equipment fault', ...
    'fire','severe storm','thunder storm','wind','winter storm','unknown'};
orderCause = reordercats(categoricalCause,newOrder);
p.SourceTable.Cause = orderCause;

Figure contains an object of type parallelplot.

変数 Cause に含まれるカテゴリ数は 7 個より多いため、グループのうちの一部はプロットで同じ色をもちます。すべてのグループに個別の色を割り当てるには、pColor プロパティを変更します。

p.Color = parula(10);

Figure contains an object of type parallelplot.

入力引数

すべて折りたたむ

ソース table。table として指定します。

関数 table を使用してワークスペース変数から table を作成できます。また、関数 readtable を使用してデータを table としてインポートできます。

ParallelCoordinatesPlot オブジェクトの SourceTable プロパティにソース table が格納されます。

座標として表示する table 変数。次のいずれかの形式で指定します。

  • 数値ベクトル — table 変数のインデックスを示します。たとえば、parallelplot(tbl,'CoordinateVariables',[1 5:7]) は table の 1 番目、5 番目、6 番目、および 7 番目の変数を選択して、座標として表示します。

  • string 配列または文字ベクトルの cell 配列 — table 変数の名前を示します。たとえば、parallelplot(tbl,'CoordinateVariables',{'Age','Weight','Height'})'Age''Weight'、および 'Height' という名前の変数を選択して、座標として表示します。

  • logical ベクトル — 選択した table 変数の true 要素を含みます。

ParallelCoordinatesPlot オブジェクトの CoordinateVariables プロパティに coordvars 値が格納されます。CoordinateTickLabels プロパティには選択した変数の名前が格納されます。

グループ化データの table 変数。次のいずれかの形式で指定します。

  • 文字ベクトルまたは string スカラー — いずれかの table 変数名を示す

  • 数値スカラー — table 変数のインデックスを示す

  • logical ベクトル — table 変数の 1 つの true 要素を含む

table 変数に関連付けられた値は、数値ベクトル、logical ベクトル、categorical 配列、string 配列、または文字ベクトルの cell 配列を形成しなければなりません。

grpvartbl の行を一意のグループに分割します。既定では、ソフトウェアは、関連付けられたプロットのラインにグループ値に従って色を付けます。同じグループに対応するプロットのラインには同じ色が付けられます。ただし、parallelplot は最大 7 つの固有のグループ色を割り当てます。グループの合計数が指定された色の数を超えると、parallelplot は指定された色を先頭から順番に繰り返し使用します。

凡例では、parallelplot はグループ名を ParallelCoordinatesPlotGroupData プロパティにおける初回出現順に表示します。

例: 'Smoker'

例: 3

入力データ。数値行列として指定します。

ParallelCoordinatesPlot オブジェクトの Data プロパティに data 値が格納されます。

座標として表示する行列の列。次のいずれかの形式で指定します。

  • 数値ベクトル — 入力データ行列の列を示します。たとえば、parallelplot(data,'CoordinateData',[1 5:7])data の 1 番目、5 番目、6 番目、および 7 番目の列を選択して、座標として表示します。

  • logical ベクトル — 入力データ行列の選択した列の true 要素が含まれます。

ParallelCoordinatesPlot オブジェクトの CoordinateData プロパティに coorddata 値が格納されます。

行列データをグループ化する値。数値ベクトル、logical ベクトル、categorical 配列、string 配列、または文字ベクトルの cell 配列として指定します。

grpdatadata の行を一意のグループに分割します。既定では、ソフトウェアは、関連付けられたプロットのラインにグループ値に従って色を付けます。同じグループに対応するプロットのラインには同じ色が付けられます。ただし、parallelplot は最大 7 つの固有のグループ色を割り当てます。グループの合計数が指定された色の数を超えると、parallelplot は指定された色を先頭から順番に繰り返し使用します。

凡例では、parallelplot はグループ名を ParallelCoordinatesPlotGroupData プロパティにおける初回出現順に表示します。

例: [1 2 1 3 2 1 3 3 2 3]

例: categorical({'blue','red','yellow','blue','yellow','red','red','yellow','blue','red'})

親コンテナー。FigurePanelTabTiledChartLayout、または GridLayout オブジェクトとして指定します。

名前と値の引数

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

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

例: parallelplot(data,'GroupData',grpdata,'DataNormalization','zscore','Jitter',0) は、grpdata を使用して data の数値データをグループ化し、ジッターなしでデータを z スコアとして表示することを指定します。

プロットのタイトル。文字ベクトル、string 配列、文字ベクトルの cell 配列、または categorical 配列として指定します。既定では、プロットにはタイトルがありません。

複数行のタイトルを作成するには、string 配列または文字ベクトルの cell 配列を指定します。配列の各要素は、テキストの行に対応します。

タイトルを categorical 配列として指定した場合、MATLAB® はカテゴリではなく、配列内の値を使用します。

例: p = parallelplot(__,'Title','My Title Text')

例: p.Title = 'My Title Text'

例: p.Title = {'My','Title'}

数値を使用した座標の正規化方式。次のいずれかのオプションとして指定します。

方式説明
'range'独立した下限と上限をもつ座標ルーラーに沿って生データを表示
'none'同じ下限と上限をもつ座標ルーラーに沿って生データを表示
'zscore'z スコア (平均は 0、標準偏差は 1) を各座標ルーラーに沿って表示
'scale'標準偏差によってスケーリングされた値を各座標ルーラーに沿って表示
'center'平均が 0 になるように中心に置かれたデータを各座標ルーラーに沿って表示
'norm'2 ノルム値を各座標ルーラーに沿って表示

これらの方式の詳細については、normalize を参照してください。

logical ベクトル、datetime 配列、duration 配列、categorical 配列、string 配列、または文字ベクトルの cell 配列である座標変数の場合、関数 parallelplot は正規化方式に関係なく、取り得る一意の値を座標ルーラーに沿って均等に分散します。

例: p = parallelplot(__,'DataNormalization','none')

例: p.DataNormalization = 'zscore'

座標ルーラーに沿ったデータ変位距離。区間 [0,1] 内の数値スカラーとして指定します。Jitter 値により、座標ルーラーに沿ってプロット ラインを true 値から変位させる最大距離が決まります。ここで、変位は一様乱数の量です。Jitter プロパティを 1 に設定する場合、隣接するジッター領域がちょうど触れ合います。実際のデータ値を表示するには、Jitter プロパティを 0 に設定します。

ジッターによってプロット ライン間をより簡単に区別できるため、ある程度のジッターは categorical データを可視化するのに特に役立ちます。ただし、Jitter 値は数値変数を含むすべての座標変数に影響を与えます。

例: p = parallelplot(__,'Jitter',0.5)

例: p.Jitter = 0.2

グループの色。次のいずれかの形式で指定します。

  • 色名、省略名、または 16 進数カラー コードを示す文字ベクトル。16 進数カラー コードはハッシュ記号 (#) で開始し、0F の範囲で 3 桁または 6 桁の 16 進数が続きます。この値は大文字と小文字を区別しません。したがって、カラー コード '#FF8800''#ff8800''#F80'、および '#f80' は等価です。

  • 1 つ以上の色の名前、省略名、または 16 進数カラー コードを示す string 配列または文字ベクトルの cell 配列。

  • 範囲 [0,1] の RGB 値から成る 3 列の行列。3 つの列は R 値、G 値、および B 値を表す。

事前定義されたこれらの色、等価の RGB 3 成分、およびその 16 進数カラー コードから選択します。

色名省略名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

既定では、parallelplot は最大 7 つの固有のグループ色を割り当てます。グループの合計数が指定された色の数を超えると、parallelplot は指定された色を先頭から順番に繰り返し使用します。

例: p = parallelplot(__,'Color',{'blue','black','green'})

例: p.Color = [0 0 1; 0 0.5 0.5; 0.5 0.5 0.5]

例: p.Color = {'#EDB120','#77AC30','#7E2F8E'}

出力引数

すべて折りたたむ

スタンドアロンの可視化である ParallelCoordinatesPlot オブジェクト。作成後にオブジェクトを変更するには、p を使用します。プロパティの一覧については、ParallelCoordinatesPlot のプロパティ を参照してください。

詳細

すべて折りたたむ

スタンドアロンの可視化

スタンドアロンの可視化は、他のチャートから独立して機能する特別な目的のために設計されたチャートです。plot および surf のような他のチャートとは異なり、スタンドアロンの可視化には事前構成済みの axes オブジェクトが組み込まれています。一部のカスタマイズは使用できません。スタンドアロンの可視化には次のような特徴もあります。

  • ライン、パッチ、または表面といった他のグラフィックス要素と組み合わせることはできません。したがって、hold コマンドはサポートされません。

  • 関数 gca はチャート オブジェクトを現在の座標軸として返すことができます。

  • axes オブジェクトを入力引数として受け入れる多くの MATLAB 関数にチャート オブジェクトを渡すことができます。たとえば、チャート オブジェクトを関数 title に渡すことができます。

ヒント

  • ParallelCoordinatesPlot オブジェクトでデータを対話的に調べるには、次のオプションを使用します (一部はライブ エディターで使用できません)。

    • ズーム — スクロール ホイールを使用してズームする。

    • パン — 平行座標プロットをクリックしてドラッグすることで移動する。

    • データ ヒント — 平行座標プロットにカーソルを合わせてデータ ヒントを表示する。ソフトウェアによってプロット内の対応するラインが強調表示されます。例については、プロットでのデータ正規化の変更を参照してください。

    • 座標の再配置 — 座標の目盛りラベルをクリックして水平方向にドラッグし、対応する座標ルーラーを別の位置に移動する。例については、平行座標プロットを使用した table データの参照を参照してください。

  • table から平行座標プロットを作成する場合、データ ヒントをカスタマイズできます。平行座標プロットのデータ ヒントには、すべての行を削除した場合でも、選択した点の値が常に表示されます。

    • データ ヒントの行を追加または削除するには、プロットの任意の場所を右クリックして [データ ヒントの変更] をポイントします。次に、変数を選択または選択解除します。

    • 複数の行を追加または削除するには、プロット上で右クリックして [データ ヒントの変更] をポイントし、[詳細] を選択します。次に、[>>] をクリックして変数を追加するか、[<<] をクリックして変数を削除します。

バージョン履歴

R2019a で導入