Python seaborn 的 clustermap 中的列颜色给出了意想不到的结果
Column colors in clustermap of Python seaborn give unexpected results
我正在尝试可视化具有不同颜色的列簇。然而,在我的例子中,颜色并没有真正显示标签。不知道哪里出了问题。
可重现的例子:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.DataFrame(np.random.normal(0, 1, [100, 100]))
labels = np.repeat([0, 1, 2, 3], [25, 25, 25, 25], axis=0)
data.columns = labels
lut = dict(zip(set(labels), sns.mpl_palette("autumn", len(set(labels)))))
col_colors=pd.DataFrame(labels)[0].map(lut)
sns.clustermap(data, col_colors=col_colors,
col_cluster=False, row_cluster=False)
plt.show()
我们可以看到 col_colors 有 4 个唯一值:
print(len(set(col_colors)))
而且我们可以看到列代表不同的标签(图的底部)。但是,在我的例子中,列仅以红色表示。
how it looks on my desktop
对于那些有兴趣的人。它应该如下:
sns.clustermap(data, col_colors=col_colors.values,
col_cluster=False, row_cluster=False)
开发者备注:
当col_colors 是一个Pandas 对象时,索引信息用于将它们与列对齐(与行相同)。这意味着在您的情况下,只使用前三种颜色,在您的示例中都是红色。如果您不想在索引上匹配,请传递 col_colors.values。
我正在尝试可视化具有不同颜色的列簇。然而,在我的例子中,颜色并没有真正显示标签。不知道哪里出了问题。
可重现的例子:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
data = pd.DataFrame(np.random.normal(0, 1, [100, 100]))
labels = np.repeat([0, 1, 2, 3], [25, 25, 25, 25], axis=0)
data.columns = labels
lut = dict(zip(set(labels), sns.mpl_palette("autumn", len(set(labels)))))
col_colors=pd.DataFrame(labels)[0].map(lut)
sns.clustermap(data, col_colors=col_colors,
col_cluster=False, row_cluster=False)
plt.show()
我们可以看到 col_colors 有 4 个唯一值:
print(len(set(col_colors)))
而且我们可以看到列代表不同的标签(图的底部)。但是,在我的例子中,列仅以红色表示。
how it looks on my desktop
对于那些有兴趣的人。它应该如下:
sns.clustermap(data, col_colors=col_colors.values,
col_cluster=False, row_cluster=False)
开发者备注:
当col_colors 是一个Pandas 对象时,索引信息用于将它们与列对齐(与行相同)。这意味着在您的情况下,只使用前三种颜色,在您的示例中都是红色。如果您不想在索引上匹配,请传递 col_colors.values。