Seaborn 热图条件边框

TMW*_*TMW 2 heatmap seaborn

我有一个包含基因名称、倍数变化和 p 值的数据框。

我可以用seaborn.heatmap颜色渐变来绘制折叠变化。

如何在 p 值 < 0.05 的特定单元格周围添加条件边框?

Joh*_*anC 5

目前还不清楚您的数据框是什么样子以及如何创建热图。

下面的代码根据一些随机数据创建热图,并在某些单元格周围创建边框(以及可选的阴影线):

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
import numpy as np
import pandas as pd
import seaborn as sns

df = pd.DataFrame({'gene name': np.repeat(list('abcdefg'), 10),
                   'change ID': np.tile(np.arange(10), 7),
                   'fold change': np.random.rand(70),
                   'p-value': np.random.rand(70) * 0.5})
heatmap_data = pd.pivot_table(df, values='fold change', index=['gene name'], columns='change ID')

ax = sns.heatmap(heatmap_data, square=True)
for index, row in df[df['p-value'] < 0.05].iterrows():
    name_pos = heatmap_data.index.get_loc(row['gene name'])
    id_pos = heatmap_data.columns.get_loc(row['change ID'])
    ax.add_patch(Rectangle((id_pos, name_pos), 1, 1, ec='cyan', fc='none', lw=2, hatch='//'))
plt.show()
Run Code Online (Sandbox Code Playgroud)

示例图