2017-07-19 77 views
1

我想繪製一個來自熊貓數據框的2列數據的熱圖。但是,我想用第三列標記x軸,理想情況下是通過顏色標記,但另一種方法(如附加軸)也同樣適用。我的數據幀是:具有特定軸標籤顏色的熱圖

MUT SAMPLE VAR    GROUP 
    True s1  1_1334442_T  CC002 
    True s2  1_1334442_T  CC006 
    True s1  1_1480354_GAC CC002 
    True s2  1_1480355_C  CC006 
    True s2  1_1653038_C  CC006 
    True s3  1_1730932_G  CC002 

...

只給數據的一個更好的想法;有9種不同類型的'組',約6萬種'VAR'和540'SAMPLE's。我不知道這是建立在python熱圖的最佳方式,但這裏是我想通了,至今:

pivot = pd.crosstab(df_all['VAR'],df_all['SAMPLE']) 
sns.set(font_scale=0.4) 
g = sns.clustermap(pivot, row_cluster=False, yticklabels=False, linewidths=0.1, cmap="YlGnBu", cbar=False) 
plt.show() 

我不知道怎麼去「集團」沿x軸顯示,作爲附加軸還是隻着色軸標籤?任何幫助將非常感激。

我不確定'MUT'列是否是一個布爾變量是一個問題,df_all在每個'VAR'上都是'TRUE',但是隨着樞軸的進行,任何沒有特定'VAR '填充爲0,其他填充爲1.我的目標是嘗試對具有類似'VAR'配置文件的樣本進行聚類。我希望這有幫助。

請讓我知道,如果我可以進一步澄清?非常感謝

回答

2

看看這個例子。您可以給clustermap函數提供一個列表或一個數據幀列。通過指定col_colors參數或row_colors參數,您可以根據該列表爲行或列指定顏色。

在下面的示例中,我使用了虹膜數據集並製作了一個pandas系列對象,用於指定特定行應具有的顏色。該熊貓系列作爲row_colors的參數。

iris = sns.load_dataset("iris") 
species = iris.pop("species") 
lut = dict(zip(species.unique(), "rbg")) 
row_colors = species.map(lut) 
g = sns.clustermap(iris, row_colors=row_colors,row_cluster=False) 

此代碼的結果如下圖片。

您可能需要稍微調整一下,以便還包括組的着色圖例。

enter image description here

+0

這有助於瞭解這可以做到。然而,我的df的結構與虹膜不同,因爲我已經制作了原始df的2列的數據透視表和交叉表,並且正在繪製基於此輸出的熱圖。我需要重新添加'GROUP'的另一列來使我的df等價於虹膜。我正在努力使用熊貓方法來做到這一點。我可以啓動一個新列,然後迭代df,併爲每一行添加哪個'GROUP'到新列,但它看起來非常麻煩 - 你知道熊貓的方法嗎? – user3062260