Main Content

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

heatmap

ヒートマップ チャートの作成

説明

heatmap(tbl,xvar,yvar) はテーブル tbl からヒートマップを作成します。入力 xvar は、x 軸に沿って表示する table 変数を示します。入力 yvar は、y 軸に沿って表示する table 変数を示します。既定の色は、x 値と y 値の各ペアが共に table に出現する回数を合計した、カウント数の集計に基づきます。

heatmap(tbl,xvar,yvar,'ColorVariable',cvar)cvar で指定された table 変数を使用して、カラー データを計算します。既定の計算方法は、平均値の集計です。

heatmap(cdata) は行列 cdata からヒートマップを作成します。ヒートマップには、cdata の各値について 1 つのセルがあります。

heatmap(xvalues,yvalues,cdata) は、x 軸と y 軸に沿って表示する値のラベルを指定します。

heatmap(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用してヒートマップの追加のオプションを指定します。オプションは他のすべての入力引数の後に指定します。プロパティの一覧については、HeatmapChart のプロパティ を参照してください。

heatmap(parent,___) は、parent で指定された Figure、パネルまたはタブにヒートマップを作成します。

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

すべて折りたたむ

医療患者データの table からヒートマップを作成します。

patients データセットを読み込み、ワークスペースに読み込んだ変数のサブセットから table を作成します。次に、Smoker 値と SelfAssessedHealthStatus 値の同じセットをもつ患者の合計数をカウントするヒートマップを作成します。

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
    Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus');

Figure contains an object of type heatmap. The chart of type heatmap has title Count of SelfAssessedHealthStatus vs. Smoker.

ヒートマップを作成し、y 軸に沿ったラベルを並べ替えます。

patients データセットを読み込み、そのデータからヒートマップを作成します。HeatmapChart オブジェクトを変数 h に代入します。

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
    Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus');

Figure contains an object of type heatmap. The chart of type heatmap has title Count of SelfAssessedHealthStatus vs. Smoker.

y 軸に沿ったラベルを並べ替えます。

h.YDisplayData = {'Excellent','Good','Fair','Poor'};

Figure contains an object of type heatmap. The chart of type heatmap has title Count of SelfAssessedHealthStatus vs. Smoker.

あるいは、データを categorical データに変更してから、関数reordercatsを使用してカテゴリを並べ替えることで、ラベルを並べ替えることもできます。同様に、関数addcatsremovecatsまたはrenamecatsを使用して、それぞれヒートマップのラベルの追加、削除または名前の変更ができます。

ヒートマップを作成し、ヒートマップ セルの色の決定に使用する table 変数を指定します。

patients データセットを読み込み、そのデータからヒートマップを作成します。ColorVariable オプションを 'Age' に設定し、特定の Smoker 値と SelfAssessedHealthStatus 値のペアをもつ患者の年齢の平均値を使用して各セルに着色します。

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
    Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus','ColorVariable','Age');

Figure contains an object of type heatmap. The chart of type heatmap has title Mean of Age.

ヒートマップを作成し、ヒートマップ セルの色の決定に使用する table 変数と計算方法を指定します。

患者のデータセットを読み込み、そのデータからヒートマップを作成します。特定の Smoker 値と SelfAssessedHealthStatus 値のペアをもつ患者の年齢の中央値を使用して、各セルに着色します。ColorVariable オプションを 'Age' に指定し、ColorMethod オプションを 'median' に指定します。

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...
    Smoker,Weight,Location);
h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus','ColorVariable','Age','ColorMethod','median');

Figure contains an object of type heatmap. The chart of type heatmap has title Median of Age.

データの行列を作成します。次に、その行列値のヒートマップを作成します。x 軸と y 軸に沿った既定のラベルは、1、2、3 のように表示されます。

cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
h = heatmap(cdata);

データの行列を作成します。次に、その行列値のヒートマップを作成します。最初の 2 つの入力引数を必要なラベルとして指定することで、x 軸と y 軸に沿ってカスタム ラベルを使用します。HeatmapChart オブジェクトのプロパティを設定することで、タイトルと軸ラベルを指定します。

cdata = [45 60 32; 43 54 76; 32 94 68; 23 95 58];
xvalues = {'Small','Medium','Large'};
yvalues = {'Green','Red','Blue','Gray'};
h = heatmap(xvalues,yvalues,cdata);

h.Title = 'T-Shirt Orders';
h.XLabel = 'Sizes';
h.YLabel = 'Colors';

Figure contains an object of type heatmap. The chart of type heatmap has title T-Shirt Orders.

ヒートマップを作成し、ColorScaling プロパティを設定して、各行または各列に沿った色を正規化します。

サンプル ファイル outages.csv を table に読み取ります。このサンプル ファイルには、米国における電力会社の停電を表すデータが含まれています。この table には、RegionOutageTimeLossCustomersRestorationTime、および Cause の 6 列があります。各列の最初の 5 行を表示します。

T = readtable('outages.csv');
T(1:5,:)
ans=5×6 table
       Region           OutageTime        Loss     Customers     RestorationTime            Cause       
    _____________    ________________    ______    __________    ________________    ___________________

    {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'   }
    {'SouthEast'}    2003-01-23 00:49    530.14    2.1204e+05                 NaT    {'winter storm'   }
    {'SouthEast'}    2003-02-07 21:15     289.4    1.4294e+05    2003-02-17 08:14    {'winter storm'   }
    {'West'     }    2004-04-06 05:44    434.81    3.4037e+05    2004-04-06 06:10    {'equipment fault'}
    {'MidWest'  }    2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'   }

x 軸に異なる地域、y 軸に異なる停電の原因を示すヒートマップを作成します。各セルには、各地域での特定原因による停電の発生回数が示されます。

h = heatmap(T,'Region','Cause');

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

各列に沿った色を正規化します。各列の最小値はカラーマップの最初の色にマッピングされ、最大値は最後の色にマッピングされます。最後の色は、各地域で停電を最も多く引き起こした原因を示します。

h.ColorScaling = 'scaledcolumns';

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

代わりに、各行に沿った色を正規化します。各行の最小値はカラーマップの最初の色にマッピングされ、最大値は最後の色にマッピングされます。最後の色は、各原因によって停電が最も多く発生した地域を示します。

h.ColorScaling = 'scaledrows';

Figure contains an object of type heatmap. The chart of type heatmap has title Count of Cause vs. Region.

ヒートマップを作成し、カスタム集計方法で計算したデータを使用してセルに着色します。関数 accumarray を使用してカラー データを計算します。

サンプル ファイル Temperature.csv を table に読み取ります。このファイルには、MonthYear、および TemperatureF の 3 列があります。

tbl = readtable('TemperatureData.csv');

table の Month 列と Year 列から categorical 配列を作成します。次に、x 軸と y 軸に沿ったラベルとして使用する一意の月と年を判定します。

months = categorical(tbl.Month);
years = categorical(tbl.Year);
xlabels = categories(months);
ylabels = categories(years);

一意の月と年の数に基づいて生成されるカラー データの最終的なサイズを判定します。

nummonths = numel(xlabels);
numyears = numel(ylabels);

categorical 配列 months および years を、関数 accumarray で使用する数値インデックスに変換します。関数 accumarray を使用して、月と年の各組み合わせに対する最高気温としてカラー データを計算します。欠損している月と年の組み合わせには NaN を使用します。

x = double(months);
y = double(years);
temps = tbl.TemperatureF;
cdata = accumarray([y,x],temps,[numyears,nummonths],@max,NaN);

ヒートマップを作成します。x 軸と y 軸にそれぞれ月と年のラベルを付けます。計算された行列データを使用してヒートマップ セルに着色します。

h = heatmap(xlabels,ylabels,cdata);

メモ: 関数 reordercats を使用して、categorical 配列の軸ラベルを並べ替えることができます。

入力引数

すべて折りたたむ

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

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

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

x 軸の table 変数。次のいずれかの形式で指定します。

  • いずれかの変数名を示す文字ベクトルまたは string スカラー。たとえば、heatmap(tbl,'HealthStatus','Gender') は x 軸として 'HealthStatus' という名前の変数を選択します。

  • table 変数のインデックスを示す数値スカラー。たとえば、heatmap(tbl,2,3) は x 軸として table 内の 2 番目の変数を選択します。

  • 1 つの true 要素を含む logical ベクトル。

table 変数に関連付けられた値は、関数 categorical が受け入れる離散カテゴリの有限集合にグループ化されていなければなりません。値がカテゴリの有限集合にグループ化されていない場合は、関数 discretize を使用して値をグループ化します。

x 軸に沿って表示されるラベルは、アルファベット順に表示されます。ラベルは、categorical 配列を使用してカスタマイズできます。例については、表形式データからのヒートマップの作成を参照してください。

選択された変数は、HeatmapChart オブジェクトの XVariable プロパティに格納されます。

y 軸の table 変数。次のいずれかの形式で指定します。

  • いずれかの変数名の文字ベクトルまたは string スカラー。たとえば、heatmap(tbl,'HealthStatus','Gender') は y 軸として 'Gender' という名前の変数を選択します。

  • table 変数のインデックスを示す数値スカラー。たとえば、heatmap(tbl,2,3) は y 軸として table 内の 3 番目の変数を選択します。

  • 1 つの true 要素を含む logical ベクトル。

table 変数に関連付けられた値は、関数 categorical が受け入れる離散カテゴリの有限集合にグループ化されていなければなりません。値がカテゴリの有限集合にグループ化されていない場合は、関数 discretize を使用して値をグループ化します。

y 軸に沿って表示されるラベルは、アルファベット順に表示されます。ラベルは、categorical 配列を使用してカスタマイズできます。例については、表形式データからのヒートマップの作成を参照してください。

選択された変数は、HeatmapChart オブジェクトの YVariable プロパティに格納されます。

カラー データの table 変数。次のいずれかの形式で指定します。

  • いずれかの変数名の文字ベクトルまたは string スカラー。たとえば、heatmap(__,'ColorVariable','HealthStatus') は y 軸として 'HealthStatus' という名前の変数を選択します。

  • table 変数のインデックスを示す数値スカラー。たとえば、heatmap(__,'ColorVariable',1) は y 軸として table 内の 3 番目の変数を選択します。

  • 1 つの true 要素を含む logical ベクトル。

table 変数に関連付けられた値は、数値型または logical でなければなりません。

行列データを使用した場合、このプロパティ値は空の [] です。選択された変数は、HeatmapChart オブジェクトの ColorVariable プロパティに格納されます。ColorData プロパティには、選択された変数に基づくデータが入力されます。

既定では、heatmap は平均値の集計に基づいてカラー データを計算します。計算方法を変更するには、ColorMethod プロパティを設定します。

ヒートマップ セルのカラー データ。行列として指定します。

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

例: [40 24 68; 68 37 58; 49 23 46]

x 軸に沿って表示される値。categorical 配列、string 配列、数値配列、または文字ベクトルの cell 配列として指定します。

例: {'small','medium','large'}

例: categorical({'small','medium','large'})

y 軸に沿って表示される値。categorical 配列、string 配列、数値配列、または文字ベクトルの cell 配列として指定します。

例: {'small','medium','large'}

例: categorical({'small','medium','large'})

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

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: heatmap(tbl,xvar,yvar,'ColorVariable','Temperatures','ColorMethod','median')

メモ

ここでは、プロパティの一部だけを紹介しています。完全な一覧については、HeatmapChart のプロパティ を参照してください。

チャートのタイトル。文字ベクトル、文字ベクトルの cell 配列、string 配列または categorical 配列として指定します。

例: h = heatmap(rand(10,10),'Title','My Title Text')

例: h.Title = 'My Title Text';

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

例: h.Title = {'My','Title'};

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

表形式データを使用してチャートを作成した場合、既定のチャートには自動生成されたタイトルが付けられます。タイトルが不要の場合は、'' を指定します。

既定で、ヒートマップはユーザー指定テキストについて TeX マークアップのサブセットをサポートします。TeX マークアップを使用して、上付き文字や下付き文字の追加、フォントのタイプや色の変更、テキストへの特殊文字の挿入を行うことができます。通常のテキストでアンダースコア (_) などの TeX マークアップ文字を使用するには、挿入する文字の前にバックスラッシュ (\) を挿入します。バックスラッシュは TeX のエスケープ文字です。詳細については、text オブジェクトのInterpreterプロパティを参照してください。

カラー データ値 (ColorData に格納) の計算方法。'count''mean''median''sum''max''min' または 'none' として指定します。

カラー データに table の 3 番目の変数を使用しない場合は、メソッドを 'count' として指定します。メソッドが 'count' である場合、ヒートマップは ColorVariable プロパティを使用しません。代わりに、x 値と y 値の各ペアがソース table に出現する回数をカウントします。この値は、表形式データを使用して ColorVariable パラメーターを指定しない場合の既定値です。

カラー データに table の 3 番目の変数を使用する場合は、ColorVariable プロパティを目的の変数に設定し、次の表にリストされたいずれかの方法として ColorMethod プロパティを指定します。x 値と y 値の各ペアに対して、次の方法ではソース table の ColorVariable 列の対応する値を使用してデータを計算します。

方法説明
'mean'平均値を計算します。この値は、ColorVariable プロパティを指定した場合の既定値です。
'median'中央値を計算します。
'sum'値を合計します。
'max'最大値を使用します。
'min'最小値を使用します。
'none'値を厳密に使用します。table は x 値と y 値の各ペアの複数のインスタンスを含むことができません。この値は、行列データを使用する場合の既定値です。

集計データの行列を独自に計算する場合は、関数 accumarray を使用します。その行列を関数 heatmap の入力として指定します。

例: h = heatmap(__,'ColorMethod','median')

例: h.ColorMethod = 'median'

出力引数

すべて折りたたむ

スタンドアロンの可視化である HeatmapChart オブジェクト。h を使用して、ヒートマップ チャートの作成後にそのプロパティを設定します。

詳細

すべて折りたたむ

スタンドアロンの可視化

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

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

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

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

ヒント

  • ヒートマップでデータを対話的に調べるには、次のオプションを使用します。

    • ズーム — スクロール ホイールまたは + キーと - キーを使用してズームします。

    • パン — ヒートマップをクリックしてドラッグするか、矢印キーを使用して、複数の行または列をまたいで移動します。

    • データ ヒント — ヒートマップにカーソルを合わせてデータ ヒントを表示します。

    • 行と列の再配列 — 行ラベルまたは列ラベルをクリックしてドラッグし、別の位置に移動します。

    • 値の並べ替え — 行ラベルまたは列ラベルにカーソルを合わせると表示されるアイコンをクリックします。1 回クリックすると値は昇順に並べ替えられ、2 回で値は降順に並べ替えられ、3 回で順序がリセットされます。

  • table からヒートマップ チャートを作成する場合、そのデータ ヒントをカスタマイズできます。

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

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

互換性についての考慮事項

すべて展開する

R2019a での動作変更

R2017a で導入