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