将颜色条添加到聚类的热图

问题描述 投票:0回答:1

我正在尝试复制这种类型的图(带有颜色条的热图作为叶子)heatmap with colorbars as leaves]

这是我到目前为止所做的

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
import scipy.cluster.hierarchy as sch
import scipy.spatial.distance as ssd

#read data
fid_df = pd.read_csv(fid_file, index_col=[0])

# scale data
def scale(x):
    return np.math.log2(x+1)
fid_df = fid_df.applymap(scale)

# clustering colums
data_1D_X = ssd.pdist(fid_df.T, 'euclidean')
X = sch.linkage(data_1D_X, method='ward')
# clustering rows
data_1D_Y = ssd.pdist(fid_df, 'cityblock')
Y = linkage(data_1D_Y, method='ward')
#plot first dendrogram
fig = plt.figure(figsize=(8, 8))

ax1 = fig.add_axes([0.09, 0.1, 0.2, 0.6])
Z1 = sch.dendrogram(Y, orientation='left')
ax1.set_xticks([])
ax1.set_yticks([])

# second dendrogram.
ax2 = fig.add_axes([0.3, 0.71, 0.6, 0.2])
Z2 = sch.dendrogram(X)
ax2.set_xticks([])
ax2.set_yticks([])

# plot matrix
axmatrix = fig.add_axes([0.3, 0.1, 0.6, 0.6])
# sorts based of clustering
idx1 = Z1['leaves']
idx2 = Z2['leaves']
D = fid_df.values[idx1, :]
D = D[:, idx2]
im = axmatrix.matshow(D, aspect='auto', origin='lower', cmap=plt.cm.YlGnBu)
axmatrix.set_xticks([])
axmatrix.set_yticks([])

示例:example

但是,我需要添加颜色条,以显示初始的行和列组。知道如何执行此操作吗?

python matplotlib scipy hierarchical-clustering dendrogram
1个回答
0
投票

这样的事情?

© www.soinside.com 2019 - 2024. All rights reserved.