clustermap
のseaborn
のラベル付けについていくつか質問があります。まず、階層的なクラスタリングの距離値を抽出し、ツリー構造の視覚化に値をプロットすることが可能です(最初の3つのレベルのみ)。
以下は、クラスタマッププロットを作成するための私のサンプルコードです。
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")
他の2つの質問は次のとおりです。-yラベルは重なり合っているため、どのように回転させるか.
-カラーバーを下または右に移動する方法。 (ヒートマップには question がありましたが、私の場合は機能しません。また、カラーバーの位置に対応していません)
Y軸のラベルが回転するというまったく同じ問題があり、解決策が見つかりました。問題は、参照した質問で提案されているようにplt.yticks(rotation=0)
を実行すると、ClusterGrid
の動作方法によりコロバーのラベルが回転することです。
それを解決し、正しいラベルを回転させるには、下のAxes
からHeatmap
を参照し、これらを回転させる必要があります:
cg = sns.clustermap(df, metric="correlation")
plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), rotation=0)
カラーバーの配置に関する他の質問については、残念ながら このGithubの問題 で示されているように、現時点ではサポートされていません。
最後に、階層的なクラスタリング距離の値については、次を使用して行または列のリンケージマトリックスにアクセスできます。
cg = sns.clustermap(df, metric="correlation")
cg.dendrogram_col.linkage # linkage matrix for columns
cg.dendrogram_row.linkage # linkage matrix for rows
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
軸の位置を変更することでカラーバーを移動できますcax:cg.cax.set_position((.85,.1,.1,.1))
、たとえば、(a、b、c、d)はxの開始位置、y開始位置、軸のx幅、y軸の座標の高さ。
ラベルを回転させる少し異なる方法
g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)