基于python中的分组(或类)的颜色热图

时间:2017-02-05 01:37:35

标签: python pandas matplotlib heatmap

任何人都可以帮助我根据类生成彩色相关矩阵,以便我可以看到群集。我有一个带有值的nparray和另一个包含每个元素的类颜色(十六进制颜色代码)的nparray。如何制作具有每个单元格的相关值的热图,但是按类(六种不同的颜色)着色。这是一个例子。 heatmap

这个How to create predefined color range in Matplotlib heat map from a Pandas Dataframe似乎是相关的,但是,该解决方案只使用了预定义的cmap。我能够生成一个pcolor图,但颜色似乎与簇标签不相关。我认为cmap分配是错误的。

import matplotlib.pyplot as plt
from pylab import *
import numpy as np
import pandas as pd

cpool=['#23525f','#f271c4','#33cccc','#e11212','#bf7300','#f2ea30']
correlations = pd.DataFrame.corr(whisky.iloc[:,2:14].transpose())
correlations = np.array(correlations)  #86x86 np.array

correlation_colors = []
for i in range(len(distilleries)):
    for j in range(len(distilleries)):
        if correlations[i,j] < 0.7:                    # if low correlation,
            correlation_colors.append('#f9f9f9')         # just use white. add to the empty array
        else:                                          # otherwise,
            if whisky.Group[i] == whisky.Group[j]:     # if the groups match,
                correlation_colors.append(cpool[whisky.Group[i]]) # color them by their mutual group (class) 0-5
            else:                                      # otherwise
                correlation_colors.append('#e4e1ff') # color them lightgray

corr_color=np.array(correlation_colors).reshape(86,86)
colmap=matplotlib.colors.ListedColormap(corr_color)
plt.pcolor(correlations,c=corr_color,cmap=colmap)

0 个答案:

没有答案