首页 > 解决方案 > Pandas Seaborn 发散调色板 - 使 0 中性和正绿色和负红色

问题描述

在 Python Pandas 中,我想创建一个表格,在负数时将背景渐变显示为红色,在正数时显示为绿色,同时 0 为白色。我想在 Seaborn 中使用 Diverging_palette,所以有不同的绿色和红色深浅。

我有一个数据框,我们称它为我制作的数据透视表。

然后我创建表格的样式: cm = sns.diverging_palette(12.9, 126.8, s=100, l=53, center="light", as_cmap=True)

我正在尝试根据我的标准自定义背景渐变:

def background_gradient(s, m, M, cmap=cm, low=0, high=0):
   
 rng = M - m
    norm = colors.Normalize(m - (rng * low), M + (rng * high))
  
  normed = norm(s.values)
  
  c = [colors.rgb2hex(x) for x in plt.cm.get_cmap(cmap)(normed)]
    
return ['background-color: %s' % color for color in c]

    
htlm = A.style.apply(background_gradient cmap=cm) \

.set_table_styles(styles).render()

`return htlm`

但是,输出将接近 0 的数字显示为错误的颜色(即,一些正数为红色,反之亦然)。此外,当我希望它们是中性(白色)时,所有 0 都是红色的。

如何自定义它,使所有正数都是不同的绿色(数字越大,绿色越深),负数为红色?b 有没有办法将 0 设置为“中性”?

标签: pythonhtmlpandasseabornheatmap

解决方案


推荐阅读