我有一个巨大的数据框df,看起来像这样:
Index Sample_names A B Z C Y U D ... O P
0 sample1 0.1 0 0.5 0.02 0 0.005 0 ... 0.004 0.08
1 sample2 0 0.3 0.03 0.8 0 0.3 0.01 ... 0.1 0
.
.
.
99 sample100 0 0 0.5 0.01 0.4 0.02 0.01 ... 0 0.004
我使用“ Sample_names”的不同子集创建了堆叠的条形图。但是,每个图都有不同的颜色分配给相同的列名。例如,在一幅图中,A列可以被分配为红色,而在另一幅图中,A列可以被分配为绿色。这使得很难比较这些数字。所以我想将每个列名称与颜色关联:
cm = plt.get_cmap('gist_rainbow')
f=int(df.size/len(df))
new_cm=[cm(1.*i/f) for i in range(f)]
color_assign=pd.DataFrame(new_cm)
color_assign['Fam_names']=list(df.head(0))
color_assign=color_assign.set_index('Fam_names')
颜色分配看起来像这样:
Index 0 1 2 3
A 1.000000 0.000000 0.160000 1.0
B 1.000000 0.000000 0.139085 1.0
Z 1.000000 0.000000 0.118170 1.0
.
.
.
P 1.000000 0.000000 0.076340 1.0
要最终分配,我尝试了一些简单的方法:
df1.plot(kind='bar',stacked=True,color=color_assign,legend=None)
(df1是我创建的新数据框,只有原始数据框df的几行,例如8行),但这没有用。反正有什么要使它起作用?