seaborn 中 clustermap 的标签?
Labels for clustermap in seaborn?
我有几个关于 seaborn
中 clustermap
标签的问题。首先是可以提取层次聚类的距离值,并将值绘制在树结构可视化上(可能只有前三个级别)。
这是我创建集群图的示例代码:
import pandas as pd
import numpy as np
import seaborn as sns
get_ipython().magic(u'matplotlib inline')
m = np.random.rand(50, 50)
df = pd.DataFrame(m, columns=range(4123, 4173), index=range(4123, 4173))
sns.clustermap(df, metric="correlation")
另外两个问题是:
- 如何旋转 y 标签,因为它们重叠在一起。
- 如何将颜色条移动到底部或右侧。 (热图有一个 question,但不适用于我的情况。也没有解决颜色问题
栏位)
我在旋转 y-axis 上的标签时遇到了完全相同的问题,并找到了解决方案。
问题是,如果您按照您引用的问题中的建议执行 plt.yticks(rotation=0)
,由于 ClusterGrid
的工作方式,它会旋转您的 colobar 上的标签。
要解决它并旋转正确的标签,您需要从底层 Heatmap
引用 Axes
并旋转这些:
cg = sns.clustermap(df, metric="correlation")
plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), rotation=0)
对于您关于颜色条放置的其他问题,我认为目前不支持此功能,很遗憾,如 this Github issue 所示。
最后,对于层次聚类距离值,您可以访问行或列的链接矩阵:
cg = sns.clustermap(df, metric="correlation")
cg.dendrogram_col.linkage # linkage matrix for columns
cg.dendrogram_row.linkage # linkage matrix for rows
您可以通过改变轴的位置来移动颜色条 cax:
cg.cax.set_position((.85,.1,.1,.1))
,例如,其中(a,b,c,d)分别为轴的x起始位置,y起始位置,x宽度和y高度,以轴坐标表示。
import seaborn as sns
g = sns.clustermap(heatmap_df, metric="correlation")
plt.setp(g.ax_heatmap.get_yticklabels(), rotation=0) # For y axis
plt.setp(g.ax_heatmap.get_xticklabels(), rotation=90) # For x axis
旋转标签的方式有点不同
g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)
我有几个关于 seaborn
中 clustermap
标签的问题。首先是可以提取层次聚类的距离值,并将值绘制在树结构可视化上(可能只有前三个级别)。
这是我创建集群图的示例代码:
import pandas as pd
import numpy as np
import seaborn as sns
get_ipython().magic(u'matplotlib inline')
m = np.random.rand(50, 50)
df = pd.DataFrame(m, columns=range(4123, 4173), index=range(4123, 4173))
sns.clustermap(df, metric="correlation")
另外两个问题是:
- 如何旋转 y 标签,因为它们重叠在一起。
- 如何将颜色条移动到底部或右侧。 (热图有一个 question,但不适用于我的情况。也没有解决颜色问题
栏位)
我在旋转 y-axis 上的标签时遇到了完全相同的问题,并找到了解决方案。
问题是,如果您按照您引用的问题中的建议执行 plt.yticks(rotation=0)
,由于 ClusterGrid
的工作方式,它会旋转您的 colobar 上的标签。
要解决它并旋转正确的标签,您需要从底层 Heatmap
引用 Axes
并旋转这些:
cg = sns.clustermap(df, metric="correlation")
plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), rotation=0)
对于您关于颜色条放置的其他问题,我认为目前不支持此功能,很遗憾,如 this Github issue 所示。
最后,对于层次聚类距离值,您可以访问行或列的链接矩阵:
cg = sns.clustermap(df, metric="correlation")
cg.dendrogram_col.linkage # linkage matrix for columns
cg.dendrogram_row.linkage # linkage matrix for rows
您可以通过改变轴的位置来移动颜色条 cax:
cg.cax.set_position((.85,.1,.1,.1))
,例如,其中(a,b,c,d)分别为轴的x起始位置,y起始位置,x宽度和y高度,以轴坐标表示。
import seaborn as sns
g = sns.clustermap(heatmap_df, metric="correlation")
plt.setp(g.ax_heatmap.get_yticklabels(), rotation=0) # For y axis
plt.setp(g.ax_heatmap.get_xticklabels(), rotation=90) # For x axis
旋转标签的方式有点不同
g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)