Python玩转复杂聚类热图clustermap!
之前详细介绍过Python制作
heatmap
的文章:
但是,在复杂聚类热图clustermap上,Matplotlib或Seaborn需要大量代码实现。
本次分享一个Python工具 PyComplexHeatmap , 少许代码玩转复杂聚类热图clustermap 。
本次分享一个Python工具 PyComplexHeatmap , 少许代码玩转复杂聚类热图clustermap 。
一个例子
#导入相关包
import PyComplexHeatmap
from PyComplexHeatmap import *
import matplotlib.pylab as plt
import pandas as pd
# 准备绘图数据
df = pd.DataFrame(['AAAA1'] * 5 + ['BBBBB2'] * 5, columns=['AB'])
df['CD'] = ['C'] * 3 + ['D'] * 3 + ['G'] * 4
df['EF'] = ['E'] * 6 + ['F'] * 2 + ['H'] * 2
df['F'] = np.random.normal(0, 1, 10)
df.index = ['sample' + str(i) for i in range(1, df.shape[0] + 1)]
df_box = pd.DataFrame(np.random.randn(10, 4),
columns=['Gene' + str(i) for i in range(1, 5)])
df_box.index = ['sample' + str(i) for i in range(1, df_box.shape[0] + 1)]
df_bar = pd.DataFrame(np.random.uniform(0, 10, (10, 2)),
columns=['TMB1', 'TMB2'])
df_bar.index = ['sample' + str(i) for i in range(1, df_box.shape[0] + 1)]
df_scatter = pd.DataFrame(np.random.uniform(0, 10, 10), columns=['Scatter'])
df_scatter.index = ['sample' + str(i) for i in range(1, df_box.shape[0] + 1)]
df_heatmap = pd.DataFrame(np.random.randn(50, 10),
columns=['sample' + str(i) for i in range(1, 11)])
df_heatmap.index = ["Fea" + str(i) for i in range(1, df_heatmap.shape[0] + 1)]
df_heatmap.iloc[1, 2] = np.nan
plt.figure(figsize=(8, 8), dpi=120)
# HeatmapAnnotation设置列(上侧)注释信息
row_ha = HeatmapAnnotation(
label=anno_label(df.AB, merge=True, rotation=45),
AB=anno_simple(df.AB, add_text=True),
axis=1,
CD=anno_simple(df.CD,
colors={
'C': 'red',
'D': 'yellow',
'G': 'green'
},
add_text=True),
Exp=anno_boxplot(df_box, cmap='turbo'),
Scatter=anno_scatterplot(df_scatter),
TMB_bar=anno_barplot(df_bar),
)
# ClusterMapPlotter绘图
cm = ClusterMapPlotter(
data=df_heatmap,
top_annotation=row_ha,
col_split=2,
row_split=3,
cmap='parula', #设置主图配色
col_split_gap=0.5,
row_split_gap=1,
col_dendrogram=False, #关闭上侧聚类
row_dendrogram=True, #开启左侧聚类
plot=True,
tree_kws={
'col_cmap': 'Set1',
'row_cmap': 'Paired'
})
plt.show()
PyComplexHeatmap主要使用
HeatmapAnnotation
添加注释、图例等信息;
使用
ClusterMapPlotter
绘制聚类图。
以上代码效果图,
更多例子
- python可视化52|最有价值50图表(python实现代码分享)
- 详解Python列表推导式|迭代器|生成器|匿名函数
- Jupyter Notebook的16个超棒插件!
- 详解Python Matplotlib (pyplot法)
- 一图胜千言,超形象图解NumPy教程!