トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

ヒートマップ

ヒートマップは、表になっている数字について、区画ごとに段階的に色を付けたグラフです。

ヒートマップの使い方

ヒートマップは、いろいろな使い方ができます。

大量の数字が含まれている表を、見やすくする方法として

下の表は1000行10列あるデータの、90行目くらいまでです。 数字が読み取れないだけでなく、全部を表示できていません。
ヒートマップ

このデータをヒートマップにすると、下のグラフになります。 ちなみに、左は、Pythonの seaborn で作りました。 右は、下記にあるRのコードで作りました。
ヒートマップ ヒートマップ

 

表にある数字の並び方の特徴を、色の変化でつかむことができるようになります。 数字そのものを見るよりも、直観的にデータの様子がわかりやすくなります。 また、セルの範囲を広くして、数字が読みとれないほど小さくなっても、数字の並び方の全体像を見る事ができます。

 

表のデータの並び方が、時間や空間の意味を持っているものなら、 変化のグラフ になります。

多次元データを表すグラフとして

表が多次元のデータの場合、この表のヒートマップは、多次元(多変数)のデータを表すグラフにもなっています。 普通のグラフは、2次元までが多いですし、3次元で立体的に見せようとすると、わかりにくくなりますが、 なんと、4次元以上でも、このグラフは対応できます。

例えば、 多変量データの相関分析 にも使えます。

3次元データを表すグラフとして

表の縦方向と横方向を、縦軸と横軸と考えると、表を3次元データと考えることができます。

つまり、この表のヒートマップは、3次元データのグラフです。 2次元分は座標、1次元分は色を使って、3次元を表現しています。 このことを知っていると、様々な3次元データの表現方法としても、ヒートマップを使えます。

2次元データを表すグラフとして

2次元の区間ごとに、度数や密度のデータを用意すると、ヒートマップは 2次元散布図 の代わりに使うこともできます。 碁盤の目のひとつひとつの位置に、度数や密度のデータを持ったグラフとして使えます。

下の図は、同じデータのヒートマップと 2次元散布図 です。 Excelで作りました。 matplotlibの2次元ヒストグラムseabornの6角形の2次元ヒストグラム でも作ることができます。

この使い方をする時の強みと弱点は、 ヒストグラム と同じです。 散布図の弱点をカバーする使い方ができる反面、 散布図の得意な 外れ値の判定 には不向きです。
ヒートマップ 2次元散布図

ヒートマップで外れ値を見る

ヒートマップで外れ値
上の図は、100行のデータのヒートマップです。 色のレンジは、指定していないので、データの最小値と最大値から自動的に設定されています。 ほとんどのデータが20以下なのに、 10行目に100くらいの外れ値があることが簡単に見つかります。

下の図は、1000行のデータのヒートマップです。 色のレンジが上の図と同じなので、どこかに外れ値があることはわかるのですが、 どこにあるのかはわかりません。
ヒートマップで外れ値

ある程度データが多いと、ヒートマップで外れ値の場所を見つけることはできません。 ただ、色のレンジを指定しないでグラフを作ると、色のレンジを確認することで、外れ値があることと、その値がどのくらいなのかはわかります。

ここのグラフは、 seabornのヒートマップ で作りました。

Rで、ヒートマップ

Rの実施例です。 下記は、コピーペーストで、そのまま使えます。

サンプルデータ を「Data.csv」という名前にして、Cドライブの「Rtest」というフォルダに置くと、下のようなグラフができます。
※ 元の表の上下が反転したグラフになります。
ヒートマップ

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み
DataM <- as.matrix(Data) # テーブルデータを行列にする
heatmap(DataM, Colv = NA, Rowv = NA) # グラフを作成

ちなみに、最後の行をシンプルに
heatmap(DataM)
にすると、 クラスター分析 をしてくれます。
ヒートマップ



順路 次は 2次元分布のグラフと関係のグラフ

Tweet データサイエンス教室