Heat mapの作成法
相関行列とかを数字のままtableにするのは芸がありません。これをheatmapにする手があります。
MATLABでは以下を実行すると描画できます。
labellist={'Subj01','Subj02','Subj03','Subj04','Subj05','Subj06','Subj07','Subj08','Subj09','Subj10','Subj11','Subj12','Subj13','Subj14','Subj15','Subj16','Subj17','Subj18','Subj19','Subj20','Subj21','Subj22','Subj23','Subj24','Subj25','Subj26','Subj27','Subj28'}
subjnum=size(labellist,2)
cordata=rand(subjnum,subjnum)
s=imagesc(cordata);
set(gca,'XTickLabelRotation',90)
set(gca, 'XTickLabel',xticklabel ,'XTick',1:subjnum);
set(gca, 'YTickLabel',xticklabel ,'YTick',1:subjnum);
caxis([0 1])
colorbar
title('Correlation Coefficient')
Pythonでも以下を実行すると、自動的に相関行列の視覚化が可能になります。これは、cordata=np.random.rand(subjnum,subjnum)により、乱数行列で計算していますので、それぞれのセルの色はバラバラです。
import numpy
import pylab
labellist=['Subj01','Subj02','Subj03','Subj04','Subj05','Subj06','Subj07','Subj08','Subj09','Subj10','Subj11','Subj12','Subj13','Subj14','Subj15','Subj16','Subj17','Subj18','Subj19','Subj20','Subj21','Subj22','Subj23','Subj24','Subj25','Subj26','Subj27','Subj28']
subjnum=len(labellist)
cordata=np.random.rand(subjnum,subjnum)
newtitle='Correlation Coefficient'
pylab.rcParams.update({'font.size': 16})
graph=pylab.figure()
numpy.fill_diagonal(cordata,numpy.nan)
j = pylab.imshow(cordata[:,:],interpolation='nearest')
pylab.colorbar()
j.set_clim(0,1)
pylab.yticks(range(subjnum),newlabellist)
pylab.xticks(range(subjnum),newlabellist,rotation=90)
graph.show()
実データとしての相関行列がnpy形式で保存されている場合は、
cordata=np.load('cordata.npy')
でできます。これをcsvに変換するには
import csv
f = open('cordata.csv', 'w')
writer = csv.writer(f, lineterminator='\n')
for i in range(len(cordata)):
csvlist = []
for j in range(len(cordata)):
csvlist.append(cordata[i][j])
writer.writerow(csvlist)
f.close()
とします。このcordata.csvをもとにheatmapを描くには、
csvfile = 'cordata.csv'
f = open(csvfile, "r")
reader = csv.reader(f)
cordata=np.zeros([28,28])
i=0
for row in reader:
cordata[i]=row
i=i+1
f.close()
とした上で、描画すればよいでしょう。