我一直在使用python,pandas和seaborn来获得具有不同colormaps/columns的热图.感谢这个问题,我做了以下事情:
示例Dataframe(sample.csv):
X,a,b,c A,0.5,0.7,0.4 B,0.9,0.3,0.8 C,0.3,0.4,0.7
使用Seaborn绘制热图
import pandas as pd import matplotlib as mpl # Set new Backend to Use Seaborn # mpl.use('Agg') import seaborn as sns import matplotlib.pyplot as plt import matplotlib.cm as cm import colorsys # Working example data: df = pd.DataFrame([[0.5,0.7,0.4],[.9,.3,.8],[.3,.4,.7]],['A','B','C']) # Get Color List N = 3 COL = [colorsys.hsv_to_rgb(x*1.0/N, 0.7, 0.5) for x in range(N)] with sns.axes_style('white'): for i, name in enumerate(df.columns): # Create cmap colors = COL[i] cmap = sns.light_palette(colors, input='rgb', reverse=False, as_cmap=True) sns.heatmap(df.mask(df.isin(df[name])!=1), cbar=False, square=True, annot=False, cmap=cmap, linewidths=0.1) plt.show()
这会产生一个带有不同colormaps/column的热图(这些值只是为了澄清问题):
现在我想使用排序的数据框生成相同的图,如:
X,col1,col2,col3 A,0.7,0.5,0.4 B,0.9,0.8,0.3 C,0.7,0.4,0.3
试图保持对(索引,列)原来的颜色,像下面的预期输出草案(值表示,我需要的是只有颜色):
编辑:
修正了一些拼写错误,现在df是表示工作矩阵的数据帧.