混合行列 (confusion matrix, heatmap)

参考

概要

混合行列 (Confusion Matrix) などと呼ばれるあの表を色付きで図示する. 色の濃さで数の大きさを表現する.

上の参考リンクでは色が連続して変化するように中間値補完が為されてるが、 私の知ってるgnuplotのバージョンではこれは再現できない. これをするには pm3d を使ったほうがいいと思う.

data format

行列 (matrix) 形式でデータを与えることにする. すなわち、データ zznnmm 列に並べたものをデータとする.

z11 z12 z13
z21 z22 z23
z31 z32 z33
z41 z42 z43

混合行列を図示する目的のためには行と列とに見出し (座標ではなくラベル) があるべきで、 どうせならデータに含めたい. gnuplot の matrix data は行ごとのアイテム数は揃ってる必要があるので、 0行目0列目にはダミーデータを入れた上で、 1行目または1列目に見出しを入れられる.

xxxx Col1 Col2 Col3
Row1  z11  z12  z13
Row2  z21  z22  z23
Row3  z31  z32  z33
Row4  z41  z42  z43

with image

plot ... using <x>:<y>:<z> with image
params default value explanation
x -- (int) データの xx 座標
y -- (int) データの yy 座標
z -- (double) データ. 対応する色が塗られる

ただし、matrix で読む場合は x, y は自動的に column 1, 2 として適切な値が入ってると見なしてよい.

columnheaders, rowheaders

plot ... matrix column rowheaders

データの一行目、一列目の文字列を見出しだと思って、 二行目、二列目以降のデータだけを使う.

example

xxxx Col1 Col2 Col3
Row1    1    2    3
Row2    2    4    6
Row3    4    8   12
Row4    8   16   24
set terminal pngcairo
set output 'heatmap.png'

unset key
set title 'Heatmap with image'

set cbrange [0:30]  # the range of colorbox
set palette cubehelix start -2 cycles 0 saturation 3 gamma 3 negative  # color scheme

plot 'heatmap.dat' matrix rowheaders columnheaders u 1:2:3 with image ,\
                '' matrix rowheaders columnheaders u 1:2:(sprintf("%g", $3)) with labels