我有一个包含基因名称、倍数变化和 p 值的数据框。
我可以用seaborn.heatmap颜色渐变来绘制折叠变化。
如何在 p 值 < 0.05 的特定单元格周围添加条件边框?
目前还不清楚您的数据框是什么样子以及如何创建热图。
下面的代码根据一些随机数据创建热图,并在某些单元格周围创建边框(以及可选的阴影线):
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)