Main Content

heatmap

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

  • Heatmap chart

説明

テーブル データ

heatmap(tbl,xvar,yvar) は、table tbl の変数を集計してヒートマップを作成します。可視化する table 変数を xvaryvar で指定します。セルの数値と既定の色は、(x, y) の各ペアが table に共に出現する回数に対応します。結果の x 軸と y 軸には、それぞれ xvaryvar の変数の一意の値が表示されます。

heatmap(tbl,xvar,yvar,'ColorVariable',cvar) は、セルの数値と対応する色の計算に cvar で指定された table 変数を使用します。既定の計算方法は平均値の集計です。したがって、セルの数値と色は、table に共に出現する (x, y) の各ペアの cvar の平均値に基づきます。

行列データ

heatmap(cdata) は、事前に集計されたデータが格納された 2 次元行列 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');

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

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

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

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

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

あるいは、データを 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');

ヒートマップを作成し、ヒートマップ セルの色の決定に使用する 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');

データの行列を作成します。次に、その行列値のヒートマップを作成します。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';

R2023b 以降

タイトル、軸ラベル、またはデータ ヒントに LaTeX (または TeX) マークアップを使用するには、HeatmapChart オブジェクトの Interpreter プロパティを設定します。

たとえば、LaTeX を使用してギリシャ文字を表示するタイトルをもつヒートマップ チャートを作成します。チャートを作成する際は、Interpreter プロパティを "latex" に設定します。そして、title 関数を呼び出すときにマークアップを含めます。

heatmap(randi(100,5,3),Interpreter="latex")
title("$\hat{\psi_1}$ Values for ${1\le\alpha\le3}$")

ヒートマップを作成し、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');

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

h.ColorScaling = 'scaledcolumns';

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

h.ColorScaling = 'scaledrows';

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

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

tbl = readtable('TemperatureData.csv');

関数 pivot を使用して、月と年の各組み合わせに対する最高気温としてカラー データを計算します。欠損している月と年の組み合わせには NaN を使用します。

P = pivot(tbl,Columns="Month",Rows="Year",DataVariable="TemperatureF",Method=@(x) mean(x,"includenan"))
P=2×13 table
    Year    April     August    December    February    January     July      June     March      May      November    October    September
    ____    ______    ______    ________    ________    _______    ______    ______    ______    ______    ________    _______    _________

    2015    43.267    69.903     40.548      15.448     21.355     69.161    59.967    28.484    57.548      43.8      49.323      64.467  
    2016    42.267       NaN        NaN      29.966      27.71     68.824    63.733    37.806    53.806       NaN         NaN         NaN  

ピボットした table の変数を再配列します。

P = P(:,["Year" "January" "February" "March" "April" "May" "June" "July" "August" "September" "October" "November" "December"]);

計算されたデータ値を使用して、ヒートマップを作成してヒートマップ セルに着色します。

xvar = P.Properties.VariableNames(2:end);
yvar = string(P.(1));
cvar = P{:,2:end};
heatmap(xvar,yvar,cvar)
title("Maximum Temperatures (F)")

Figure contains an object of type heatmap. The chart of type heatmap has title Maximum Temperatures (F).

既定では、ヒートマップ チャートは sky カラーマップの 256 色のサンプリングを使用します。名前と値の引数 Colormap を指定して、サンプリングを変更できます。

たとえば、2 行 1 列のタイル表示チャート レイアウトで 2 つのヒートマップ チャートを作成します。上のチャートでは既定の 256 色のセットを使用しており、下のチャートでは 2 色のみを使用しています。

tiledlayout(2,1,TileSpacing="compact")

% Top chart with default colors
nexttile
heatmap(magic(10))

% Bottom chart with two colors
nexttile
heatmap(magic(10),Colormap=sky(2))

入力引数

すべて折りたたむ

ソース 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 オブジェクトとして指定します。

名前と値の引数

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

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

例: 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 からヒートマップ チャートを作成する場合、そのデータ ヒントをカスタマイズできます。

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

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

バージョン履歴

R2017a で導入

すべて展開する