Main Content

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

平行座標プロットを使用した table データの参照

この例では、ファイルを table として MATLAB® にインポートし、表形式データから平行座標プロットを作成し、プロットの外観を変更する方法を説明します。

平行座標プロットは、複数の列をもつ表形式データまたは行列データを可視化する際に便利です。入力データの行はプロット内のラインに対応し、入力データの列はプロット内の座標に対応します。プロット内のラインをグループ化すると、データのトレンドをより適切に確認できます。

ファイルを table としてインポート

2015 年 1 月から 2016 年 7 月までの毎日の平均気温を含んだサンプル ファイル TemperatureData.csv を読み込みます。ファイルを table に読み取り、最初の数行を表示します。

tbl = readtable('TemperatureData.csv');
head(tbl)
ans=8×4 table
    Year       Month       Day    TemperatureF
    ____    ___________    ___    ____________

    2015    {'January'}     1          23     
    2015    {'January'}     2          31     
    2015    {'January'}     3          25     
    2015    {'January'}     4          39     
    2015    {'January'}     5          29     
    2015    {'January'}     6          12     
    2015    {'January'}     7          10     
    2015    {'January'}     8           4     

基本的な平行座標プロットの作成

table の最初の数行から平行座標プロットを作成します。プロット内の各ラインは、table 内の 1 行に対応します。既定では、parallelplot は table 内のすべての座標変数を、table 内の表示と同じ順序で表示します。ソフトウェアでは、座標変数名は、対応する座標ルーラーの下に表示されます。

プロットは、table の最初の 8 行が、2015 年 1 月の最初の 8 日間の気温データを提供することを示します。たとえば、その 8 日間の中で 8 日目の平均気温が最も低くなっています。

parallelplot(head(tbl))

プロットの解釈に役立つよう、MATLAB は既定でプロット ラインにランダムに微変動を起こし、座標ルーラーに沿って完全にオーバーラップすることがないようにします。たとえば、最初の 8 回の観測値は、YearMonth の値が同じですが、プロット ラインは、Year 座標ルーラーの 2015 の目盛りや Month 座標ルーラーの January の目盛りで重なっていません。ジッターはすべての座標変数に影響しますが、目盛り間の距離に依存するため、多くの場合は categorical 座標ルーラーでより顕著になります。プロット内のジッターの量は、Jitter プロパティを設定することによって制御できます。

Year 座標ルーラーの目盛りの一部は、意味のない 10 進数であることに注意してください。座標ルーラーの目盛りを意味のある値のみに対応させるには、関数 categorical を使用して、変数を categorical 変数に変換します。

tbl.Year = categorical(tbl.Year);

ここで、table 全体から平行座標プロットを作成します。ParallelCoordinatesPlot オブジェクトを変数 p に割り当て、p を使用して、作成後にプロットを変更します。たとえば、Title プロパティを使用してタイトルをプロットに追加します。

p = parallelplot(tbl)
p = 
  ParallelCoordinatesPlot with properties:

            SourceTable: [565x4 table]
    CoordinateVariables: {'Year'  'Month'  'Day'  'TemperatureF'}
          GroupVariable: ''

  Show all properties

p.Title = 'Temperature Data';

プロット ラインのグループ化

GroupVariable プロパティを設定することにより、Year の値に従ってプロット内のラインをグループ化します。既定では、MATLAB はプロットに凡例を追加します。凡例は、LegendVisible プロパティを 'off' に設定することによって削除できます。

p.GroupVariable = 'Year';

座標変数の対話的再配置

座標変数を対話的に再配置して比較しやすくし、どの変数をプロットに保持するかを決定します。

Figure ウィンドウにプロットを開きます。座標の目盛りラベルをクリックし、関連付けられた座標ルーラーを、選択した場所へとドラッグします。ソフトウェアによって、選択した座標ルーラーの輪郭が黒い四角形で描かれます。たとえば、Month 座標の目盛りラベルをクリックして、座標ルーラーを右にドラッグできます。すると、MonthTemperatureF の値が比較しやすくなります。

座標変数を対話的に再配置すると、プロットの関連する CoordinateTickLabels プロパティ、CoordinateVariables プロパティ、および CoordinateData プロパティが更新されます。

対話機能オプションの詳細については、ヒントを参照してください。

座標変数のサブセットの選択

p.SourceTable 内の座標変数のサブセットを表示し、pCoordinateVariables プロパティを設定してプロット内の順序を指定します。

具体的には、変数 Day をプロットから削除し、ソース table の 4 番目の列にある変数 TemperatureF を、プロット内の 2 番目の座標として表示します。

p.CoordinateVariables = [1 4 2];

あるいは、変数名の string 配列か cell 配列、または選択した変数の true 要素をもつ logical ベクトルを使用して、CoordinateVariables プロパティを設定できます。

座標変数でのカテゴリの変更

Month 内のカテゴリのサブセットを表示し、プロット内の座標ルーラーに沿ったカテゴリの順序を変更します。

2 年のうち 1 年分のデータのみが存在する月もあるため、そのような単独月に対応する行をソース table で削除します。MATLAB では、ソース table を変更するとすぐにプロットが更新されます。

uniqueMonth = {'September','October','November','December','August'};
uniqueMonthIdx = ismember(p.SourceTable.Month,uniqueMonth);
p.SourceTable(uniqueMonthIdx,:) = [];

ソース table を更新することにより、Month 座標ルーラーに沿って時系列順に月を配置します。

categoricalMonth = categorical(p.SourceTable.Month);
newOrder = {'January','February','March','April','May','June','July'};
orderMonth = reordercats(categoricalMonth,newOrder);
p.SourceTable.Month = orderMonth;

ビン化された値を使用したプロット ラインのグループ化

各月の気温の範囲をより見やすくするために、discretize を使用して気温データをビン化し、ビン化された値を使用してプロット内のラインをグループ化します。ソース table 内で最低気温と最高気温を確認します。これらの値が含まれるようにビン エッジを設定します。

min(p.SourceTable.TemperatureF)
ans = -3
max(p.SourceTable.TemperatureF)
ans = 80
binEdges = [-3 10:10:80];
bins = {'00s+/-','10s','20s','30s','40s','50s','60s','70s+'};
groupTemperature = discretize(p.SourceTable.TemperatureF,binEdges,'categorical',bins);

ビン化された気温をソース table に追加します。ビン化された気温データに従って、プロット内のラインをグループ化します。

p.SourceTable.GroupTemperature = groupTemperature;
p.GroupVariable = 'GroupTemperature';

GroupTemperature には 7 つを超えるカテゴリが含まれているため、一部のグループはプロット内で同じ色になります。Color プロパティを設定して、グループごとに別々の色を割り当てます。

p.Color = jet(8);

参考

関数

プロパティ