【问题标题】:Seaborn clustermap with two row_colors具有两个 row_colors 的 Seaborn clustermap
【发布时间】:2020-09-01 02:25:09
【问题描述】:

快速提问,我在 row_colors 中有一个带有变量 'age_range' 的集群图,我也想将变量 'education' 添加为 row_color。我有以下工作代码:

agerange = df_cor_small.pop("agerange")
lut = dict(zip(agerange.unique(), "rbg"))
row_colors = agerange.map(lut)

ax = sns.clustermap(df_cor_small, cmap='YlGnBu', row_colors=row_colors, figsize=(15,100), cbar_pos=(1.05, .2, .03, .4))

输出这个数字:

(目前 df_cor_small 不包括变量“教育”,但一旦我知道如何实现它,它就会像“agerange”一样弹出)

有什么建议可以实现吗?

【问题讨论】:

    标签: python cluster-analysis seaborn


    【解决方案1】:

    您可以将颜色作为 data.frame 提供,我认为您现在正在提供一个列表。在下面的示例中,我将黑色分配给 8 种颜色,将 7x20 和 10 分配给行。没有对行进行聚类以表明分配正确:

    import seaborn as sns; sns.set(color_codes=True)
    import string
    iris = sns.load_dataset("iris")
    species = iris.pop("species")
    lut = dict(zip(species.unique(), "rbg"))
    samples = np.repeat(list(string.ascii_letters[0:8]),20)[:150]
    sample_cols = dict(zip(set(samples), sns.color_palette("cubehelix", 8)))
    
    row_colors = pd.DataFrame({'species':species.map(lut),
                              'sample':[sample_cols[i] for i in samples]})
    g = sns.clustermap(iris, row_colors=row_colors,row_cluster=False)
    

    【讨论】:

    • 太棒了!多谢。一个小的附加问题。年龄范围有 3 个级别,因此 RBG 非常完美。但是,我的教育变量有 8 个级别,所以最后 5 个级别都被分配为白色。如果有不同的 rbga 参数,我可以给它更多颜色供我使用吗?
    • 是的,请参阅seaborn.pydata.org/tutorial/color_palettes.html 了解调色板。您可以将颜色作为元组传递到数据框中,这不是问题
    • 我不知道education variable 是什么,但只要你的字典正确,它应该可以工作
    猜你喜欢
    • 1970-01-01
    • 2016-04-06
    • 2015-12-28
    • 2023-01-10
    • 1970-01-01
    • 2015-03-11
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多