python - 从 Seaborn 热图格式中排除列,但保留在 map 中

标签 python data-visualization seaborn

所以我的 table 看起来有点像这样:

Cl1  Cl2  Cl3  Sum
0.7  0.9  0.9  2.5
0.8  1.5  0.9  3.2
2.4  2.8  2.1  7.3

我希望将热图颜色应用于第 1-3 列,但不应用于 Sum,因为它会吸收热图中的所有内容,并使各列看起来平淡无奇。

我现在想到的就是将 Sum 值除以 100,但这会让读者感到困惑,并且需要解释。

有没有办法不设置 Sum 列的格式,但保持其值不变?

一些开始的代码:

import numpy as np
import pandas as pd
import seaborn as sns

df = pd.DataFrame(np.random.rand(3,3), columns='Cl1 Cl2 Cl3'.split())

df['Sum'] = 0
for i in df.index:
    df['Sum'].iloc[i] = np.sum(df.iloc[i])

sns.heatmap(df, annot=True, cmap='Reds')

最佳答案

使用 mask 并使用 for 循环为 mask 区域添加文本。

mask = np.zeros((3, 4))
mask[:,3] = True
ax = sns.heatmap(df, mask=mask, annot=True,
             vmin=df.values[:,:3].ravel().min(),
             vmax=df.values[:,:3].ravel().max(),
             annot_kws={"size": 20, "color":"g"})


for (j,i), label in np.ndenumerate(df.values):
    if i == 3:
        ax.text(i+0.5, j+0.5, label, 
                fontdict=dict(ha='center',  va='center',
                                         color='g', fontsize=20))

enter image description here

<小时/>

替换循环的替代建议:

mask = np.zeros((3, 4))
mask[:,3] = True
sns.heatmap(df, mask=mask)
sns.heatmap(df, alpha=0, cbar=False, annot=True, annot_kws={"size": 20, "color":"g"})

导致相同的结果

关于python - 从 Seaborn 热图格式中排除列,但保留在 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53606027/

相关文章:

r - R中的堆积柱状图

plot - 在 Observable Plot 中动画数据转换

python - 在同一行中绘制 2 个 seaborn KDE 联合图

python - pyLucene安装

python - 将python中生成的图像存储到Django数据库(MySQL)

python - 无法安装 mysql- for Python/Django (Windows)

python - 如何在多个子图中绘图

python - 属性错误 : module 'fiona' has no attribute '_loading'

javascript - D3轴标签必须单独添加吗?

python - 如何链接涉及 'index' 操作的 pandas 管道操作?