web-dev-qa-db-ja.com

Seabornのclustermapのラベル?

clustermapseabornのラベル付けについていくつか質問があります。まず、階層的なクラスタリングの距離値を抽出し、ツリー構造の視覚化に値をプロットすることが可能です(最初の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")

enter image description here

他の2つの質問は次のとおりです。-yラベルは重なり合っているため、どのように回転させるか.
-カラーバーを下または右に移動する方法。 (ヒートマップには question がありましたが、私の場合は機能しません。また、カラーバーの位置に対応していません)

37
Bin

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
49
Charles Menguy
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
3
Surya

軸の位置を変更することでカラーバーを移動できますcaxcg.cax.set_position((.85,.1,.1,.1))、たとえば、(a、b、c、d)はxの開始位置、y開始位置、軸のx幅、y軸の座標の高さ。

1
tikacp

ラベルを回転させる少し異なる方法

g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)
1
Nikita Kotlov