绘制相关矩阵的图例

时间:2016-10-10 20:00:58

标签: python pandas matplotlib

我有从数据框获得的相关性垫

>>> mat
                   Lcaud     Rcaud  Left_cereb_gm  Right_cereb_gm     Lamyg            
Rcaud           0.931934  1.000000       0.856891        0.715523  0.924995
Left_cereb_gm   0.915274  0.856891       1.000000        0.938301  0.601521
Right_cereb_gm  0.744007  0.715523       0.938301        1.000000  0.445450
Lamyg           0.754676  0.924995       0.601521        0.445450  1.000000
Rput            0.717757  0.876985       0.635881        0.462773  0.912815

我可以很好地绘制它:

heatmap = plt.pcolor(mat, cmap=matplotlib.cm.Blues)

但是我想在剧情中得到传说'Lcaud','Rcaud'等等。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我认为你真的不想要actual legend,因为没有简单的方法来定义每个标签或标签 - 标签对的颜色。相反,我认为你问的是设置ticklabels?例如,给定这些数据:

if(!( (number.get(i)) % 3==0) || ( (number.get(i)) % 5==0) ){
    temp=String.valueOf(number.get(i));
    numfb.add(i,temp);
  }
  else if( (number.get(i)) % 5==0 && (number.get(i)) % 3==0 ){
    numfb.add(i,"FizzBuzz");
  }
  else if( (number.get(i) ) %3 == 0){
    numfb.add(i,"Fizz");
  }
  else if( (number.get(i) ) % 5 == 0 ){
    numfb.add(i,"Buzz");
  }

我们可以做到以下几点:

df = pd.DataFrame(np.random.rand(50, 5), columns=list('ABCDE'))
df.corr()
              A         B         C         D         E
A  1.000000  0.184661  0.125002  0.024962  0.115385
B  0.184661  1.000000  0.224653 -0.178857 -0.185907
C  0.125002  0.224653  1.000000 -0.011785  0.238073
D  0.024962 -0.178857 -0.011785  1.000000  0.171649
E  0.115385 -0.185907  0.238073  0.171649  1.000000

产生这个: enter image description here

或者,Pandas有一个辅助函数来帮助可视化数据框列之间的相关性,称为scatter_matrix

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.pcolor(df.corr(), cmap=plt.cm.Blues)
ax.set_xticks(np.arange(5)+0.5) # center x ticks
ax.set_yticks(np.arange(5)+0.5) # center y ticks
ax.set_xticklabels(df.columns)
ax.set_yticklabels(df.columns)

的产率 enter image description here