我有一個pandas資料框架,看起來像:
我有一個pandas資料框架。
gene1 gene2 pvalue qvalue
TP53。 FUBP1 6.381282e-09。 2.435575e-08
TP53。 CIC 1.570489e-22。 7.055298e-22
IDH1。 NF1 1.946551e-05。 7.116265e-05
我想要一個如下所示的矩陣:
因此,我想繪制一個矩陣,它的行和列都是基因名稱,并且只給那些在上述pandas資料框中找到基因對的單元格著色。我怎樣才能在pandas中實作這一點。敬請賜教。
uj5u.com熱心網友回復:
這里是一個作業版本:
import seaborn as sns
# cleanup
df['pvalue'/span>] = df['pvalue'/span>]。 str[:-1].astype(float)
df['gene1'] = df['gene1'].str[ :-1]
idx = sorted(set(df['gene1']).union(df['gene2'])
df2 = (df.pivot(index='gene1'/span>, columns='gene2'/span>, values='pvalue'/span>)
.reindex(index=idx, columns=idx)
)
mask = df2.isna()&np.isnan(df2.T.values) # 保持對兩種基因組合(A/B和B/A)的NA的跟蹤。
df2 = df2.fillna(0)
df2 = df2.values.T #填充矩陣A/B → B/A
df2 = df2.mask(mask) # restore NAs
cmap = sns.diverging_palette(323, 101, s=60, as_cmap=True)
ax = sns.heatmap(data=-np.log10(df2), mask=np.triu(df2.values), center=0, cmap=cmap)
ax.invert_yaxis()
ax.xaxis.tick_top()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/312404.html
標籤:
下一篇:Python資料框的按行制圖

