Подтвердить что ты не робот

Ярлыки для кластерной карты в морском море?

У меня есть несколько вопросов о маркировке для clustermap в seaborn. Во-первых, можно извлечь значения расстояния для иерархической кластеризации и нанести значение на визуализацию древовидной структуры (возможно, только на первые три уровня).

Вот мой примерный код для создания графика кластерной карты:

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, но не работает для моего случая. Также не касается цвета  позиция бара)

4b9b3361

Ответ 1

У меня была такая же проблема, когда метки на оси Y были повернуты и нашли решение. Проблема в том, что если вы делаете plt.yticks(rotation=0), как предлагается в вопросе, на который вы ссылаетесь, он будет вращать метки на вашем колобаре из-за того, как работает ClusterGrid.

Чтобы решить эту проблему и повернуть правильные метки, вам необходимо указать Axes из базового Heatmap и повернуть их:

cg = sns.clustermap(df, metric="correlation")
plt.setp(cg.ax_heatmap.yaxis.get_majorticklabels(), rotation=0)

Что касается другого вопроса о размещении colorbar, я не думаю, что в данный момент это поддерживается, как указано этой проблемой Github.

И, наконец, для значений расстояния иерархической кластеризации вы можете получить доступ к матрицам связей для строк или столбцов с помощью:

cg = sns.clustermap(df, metric="correlation")
cg.dendrogram_col.linkage # linkage matrix for columns
cg.dendrogram_row.linkage # linkage matrix for rows

Ответ 2

вы можете перемещать цветную панель, изменяя положение ее оси cax: cg.cax.set_position((.85,.1,.1,.1)), например, где (a, b, c, d) - начальная позиция x, y начальная позиция, ширина x и y высота оси, соответственно, в терминах координат оси.

Ответ 3

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

Ответ 4

Немного другой способ повернуть метки

g.ax_heatmap.set_yticklabels(g.ax_heatmap.get_yticklabels(), rotation=0)