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