У меня есть матрица генных выражений в сравнении с клетками, и я хотел бы отобразить их в виде тепловой карты, что само по себе не является проблемой. Однако отображение всех генов в виде yticklabels было бы слишком хаотичным и визуально непривлекательным. Поэтому я аннотировал каждый из генов как принадлежащий определенной функциональной группе и хотел бы представить каждую функциональную группу в виде цвета, и чтобы их цвета отображались на тепловой карте в том же порядке, что и гены. Просто чтобы прояснить, я не хотел бы группировать их по цветам, которые, я полагаю, вы могли бы сделать с помощью кластерной карты seaborn.
Как таковой, до сих пор у меня есть pandas dataframe, который содержит мультииндекс генов и соответствующих им функциональных групп, а также клетки.
Я много раз искал ответы в Stackoverflow и Google, но безуспешно. Это моя первая попытка чего-либо подобного, поэтому, к сожалению, я не знаю, с чего именно начать.
Итак, для простоты предположим, что у вас есть следующий фрейм данных:
import seaborn as sns
import numpy as np
import pandas as pd
data=pd.DataFrame(np.array([(0,1,2),(4,5,6),(7,8,9)]), columns=['C1','C2','C3'], index=pd.MultiIndex.from_arrays([['Gene1','Gene2','Gene3'],['A','B','A']]))
Это даст следующее:
C1 C2 C3
Gene1 A 0 1 2
Gene2 B 4 5 6
Gene3 A 7 8 9
Теперь я могу просто позвонить sns.heatmap(data)
, чтобы сгенерировать тепловую карту. Однако, как я могу настроить его так, чтобы я получал цвета, представляющие A & B, а не Gene1, Gene2, Gene3 как yticklabels? Например, скажем, «А» - синий, а «В» - зеленый, я хочу, чтобы эти yticklabels (сверху вниз>) были синего, зеленого и синего цвета.
Заранее большое спасибо.