У меня огромный массив данных, 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 - новый созданный мной фрейм данных, в котором всего несколько, скажем, 8 строк исходного фрейма данных, df) Но это не сработало. Есть ли способ заставить его работать?