Seaborn clustermap 和列的多色标记
Seaborn clustermap and multiple color labeling of columns
每个 seaborn.clustermap、col_colors 段,您可以将 pandas.DataFrame
对象作为 col_colors
属性传递以获取映射.但是,当我传递 DataFrame 时,我得到了正确的标签,但没有颜色。下面的示例代码:
import seaborn as sns
import pandas as pd
data=sns.load_dataset("iris")
data.pop("species")
color_pal = ["r","r","b","b"]
color_th = ["y","g","y","g"]
color_df = pd.DataFrame([color_pal,color_th],index=["type","size"]).T
sns.clustermap(data=data,col_colors=color_df)
iris
数据集由四列组成:
sepal_length, sepal_width, petal_length, petal_width
上面测试代码背后的“想法”是将所有 sepal
着色为红色,所有 petal
着色为蓝色,所有 length
着色为黄色,所有 width
作为绿色。所以 sepal_length
会有一层红色,另一层黄色。当我将上面的代码传递给 clustermap 时,我得到以下图:
正确的标签,但没有任何颜色。
但是当我通过以下代码时:
sns.clustermap(data=data,col_colors=color_df["type"].values)
我得到下一张图片:
我得到了正确的颜色,但我没有任何标签而且我只有一个标签。我发现 this 问题,它重申颜色也通过索引与数据匹配 - 我想这就是为什么我没有得到正确的着色。
我想要的是使用正确的标签和正确的颜色获得多级标签。
我能理解索引如何匹配行颜色 - 但我无法真正理解它如何使用索引来匹配列颜色。我怎样才能使这段代码工作。
据我了解,color_df
的索引映射到 data
的列。因此,color_df = pd.DataFrame([color_pal,color_th],index=["type","size"], columns=data.columns).T
或者,如果没有转置:color_df = pd.DataFrame({"type": color_pal, "size": color_th}, index=data.columns)
将为 type
设置一个颜色行,为 size
.
设置另一个颜色行
import seaborn as sns
import pandas as pd
data = sns.load_dataset("iris")
data.pop("species")
color_pal = ["r", "r", "b", "b"]
color_th = ["y", "g", "y", "g"]
color_df = pd.DataFrame({"type": color_pal, "size": color_th}, index=data.columns)
sns.clustermap(data=data, col_colors=color_df)
每个 seaborn.clustermap、col_colors 段,您可以将 pandas.DataFrame
对象作为 col_colors
属性传递以获取映射.但是,当我传递 DataFrame 时,我得到了正确的标签,但没有颜色。下面的示例代码:
import seaborn as sns
import pandas as pd
data=sns.load_dataset("iris")
data.pop("species")
color_pal = ["r","r","b","b"]
color_th = ["y","g","y","g"]
color_df = pd.DataFrame([color_pal,color_th],index=["type","size"]).T
sns.clustermap(data=data,col_colors=color_df)
iris
数据集由四列组成:
sepal_length, sepal_width, petal_length, petal_width
上面测试代码背后的“想法”是将所有 sepal
着色为红色,所有 petal
着色为蓝色,所有 length
着色为黄色,所有 width
作为绿色。所以 sepal_length
会有一层红色,另一层黄色。当我将上面的代码传递给 clustermap 时,我得到以下图:
正确的标签,但没有任何颜色。
但是当我通过以下代码时:
sns.clustermap(data=data,col_colors=color_df["type"].values)
我得到下一张图片:
我得到了正确的颜色,但我没有任何标签而且我只有一个标签。我发现 this 问题,它重申颜色也通过索引与数据匹配 - 我想这就是为什么我没有得到正确的着色。
我想要的是使用正确的标签和正确的颜色获得多级标签。
我能理解索引如何匹配行颜色 - 但我无法真正理解它如何使用索引来匹配列颜色。我怎样才能使这段代码工作。
据我了解,color_df
的索引映射到 data
的列。因此,color_df = pd.DataFrame([color_pal,color_th],index=["type","size"], columns=data.columns).T
或者,如果没有转置:color_df = pd.DataFrame({"type": color_pal, "size": color_th}, index=data.columns)
将为 type
设置一个颜色行,为 size
.
import seaborn as sns
import pandas as pd
data = sns.load_dataset("iris")
data.pop("species")
color_pal = ["r", "r", "b", "b"]
color_th = ["y", "g", "y", "g"]
color_df = pd.DataFrame({"type": color_pal, "size": color_th}, index=data.columns)
sns.clustermap(data=data, col_colors=color_df)