在聚类图上为等于零的值设置特定颜色
Setting specific colors for values equal to zero on cluster map
我想在 seaborn 的聚类地图图形输出方面得到一些帮助。
在我的数据中,我丢失了转换为 0 的数据。
我想为等于零的值使用白色,为其余值使用调色板。
有没有办法在cmap中标明?
import pandas as pd
from random import randint
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame({'A': [randint(1, 10) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(70, 100) for x in xrange(5)],
'B': [randint(0, 2) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(70, 100) for x in xrange(5)],
'C': [randint(0, 10) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(60, 100) for x in xrange(5)],
'D': [randint(0, 40) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(60, 100) for x in xrange(5)]})
cmap = sns.cubehelix_palette(as_cmap=True, start=.5, rot=-.75, light=.9)
sns.clustermap(df, figsize=(13, 13), cmap=cmap)
实际集群:
值=0 为白色的结果:
clustermap
有 kwarg mask
。来自 docs:
mask : boolean array or DataFrame, optional
If passed, data will not be shown in cells where mask is True. Cells with missing values are automatically masked. Only used for visualizing, not for calculating.
因此,对于您的示例,您可以使用布尔数组,如下所示:mask=(df==0)
sns.clustermap(df, figsize=(13, 13), cmap=cmap, mask=(df==0))
以上解决方案对我不起作用,但将这些特定值(等于零时)设置为 NA 有效。
我想在 seaborn 的聚类地图图形输出方面得到一些帮助。
在我的数据中,我丢失了转换为 0 的数据。
我想为等于零的值使用白色,为其余值使用调色板。
有没有办法在cmap中标明?
import pandas as pd
from random import randint
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame({'A': [randint(1, 10) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(70, 100) for x in xrange(5)],
'B': [randint(0, 2) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(70, 100) for x in xrange(5)],
'C': [randint(0, 10) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(60, 100) for x in xrange(5)],
'D': [randint(0, 40) for x in xrange(10)]+[randint(30, 50) for x in xrange(5)]+[randint(60, 100) for x in xrange(5)]})
cmap = sns.cubehelix_palette(as_cmap=True, start=.5, rot=-.75, light=.9)
sns.clustermap(df, figsize=(13, 13), cmap=cmap)
实际集群:
值=0 为白色的结果:
clustermap
有 kwarg mask
。来自 docs:
mask : boolean array or DataFrame, optional
If passed, data will not be shown in cells where mask is True. Cells with missing values are automatically masked. Only used for visualizing, not for calculating.
因此,对于您的示例,您可以使用布尔数组,如下所示:mask=(df==0)
sns.clustermap(df, figsize=(13, 13), cmap=cmap, mask=(df==0))
以上解决方案对我不起作用,但将这些特定值(等于零时)设置为 NA 有效。