对于习惯使用python的朋友,可以考虑用seaborn库画图,方便高效。
对于热图,可以考虑使用seaborn.clustermap来做。其参数如下:
seaborn.clustermap(data, pivot_kws=None, method='average', metric='euclidean', z_score=None, standard_scale=None, figsize=(10, 10), cbar_kws=None, row_cluster=True, col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None, col_colors=None, mask=None, dendrogram_ratio=0.2, colors_ratio=0.03, cbar_pos=(0.02, 0.8, 0.05, 0.18), tree_kws=None, **kwargs)
其中data是个2D array,且不能含有NA (这个与R中的heatmap.2等不同);
(此处用的seaborn版本是0.10.0)
import seaborn as sns
sns.set(color_codes=True)
iris = sns.load_dataset("iris")
species = iris.pop("species")
g = sns.clustermap(iris)
heatmap1
修改大小/排布等:
g = sns.clustermap(iris,
figsize=(7, 5),
row_cluster=False,
dendrogram_ratio=(0.1, 0.2),
cbar_pos=(0, 0.2, 0.03, 0.4))
heatmap2
加上color bar:
lut = dict(zip(species.unique(), "rbg"))
row_colors = species.map(lut)
g = sns.clustermap(iris, row_colors=row_colors)
heatmap3
修改颜色和颜色范围,其中cmap参数可以修改颜色,有很多可选,可以参考这个帖子https://blog.csdn.net/ztf312/article/details/102474190:
g = sns.clustermap(iris, cmap="jet", vmin=0, vmax=10)
heatmap4
修改距离计算方法,默认为欧式距离:
g = sns.clustermap(iris, metric="correlation")
heatmap5
对行进行标准化,0是行,1是列:
g = sns.clustermap(iris, z_score=0, cmap="vlag")
heatmap6
欢迎关注~
生信编程日常
网友评论