Расходящаяся палитра Pandas Seaborn — делает 0 нейтральных и положительных точек зелеными, а негативы — красными

#python #html #pandas #seaborn #heatmap

#python #HTML #pandas #seaborn #тепловая карта

Вопрос:

В Python Pandas я хочу создать таблицу, которая отображает градиент фона красным при отрицательных числах и зеленым при положительных числах, при этом 0 является белым. Я хочу использовать diverging_palette с Seaborn, чтобы были разные оттенки зеленого и красного.

У меня есть фрейм данных, назовем его A, который я превратил в сводную таблицу.

Затем я создаю стиль таблицы: 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 как «нейтральный»?