Центрирование карты цветов градиента фона для объекта Styler pd.DataFrame - PullRequest
1 голос
/ 12 марта 2020

Не уверен, что возможно использовать DivergingNorm в matplotlib для цветных карт в рамках pandas объектов Styler. В качестве примера:

import pandas as pd
import matplotlib.cm

# retrieve red-yellow-green diverging color map
cmap = matplotlib.cm.get_cmap('RdYlGn')

# create sample pd.DataFrame
ix = pd.date_range(start=pd.Timestamp(2020, 1, 1), periods=4)
df = pd.DataFrame(index=ix, columns=['D/D CHANGE'], data=[-1, 0, 2, 5])

df.style.background_gradient(cmap=cmap)

enter image description here

В идеале только отрицательные (положительные) значения должны отображаться красным (зеленым).

1 Ответ

1 голос
/ 12 марта 2020

Не похоже, что есть возможность передать пользовательскую нормализацию в background_gradient (возможно, это может быть запрос функции для публикации на pandas github). Но вы можете использовать пользовательскую функцию, чтобы получить желаемый результат:

def background_with_norm(s):
    cmap = matplotlib.cm.get_cmap('RdYlGn')
    norm = matplotlib.colors.DivergingNorm(vmin=s.values.min(), vcenter=0, vmax=s.values.max())
    return ['background-color: {:s}'.format(matplotlib.colors.to_hex(c.flatten())) for c in cmap(norm(s.values))]

# create sample pd.DataFrame
ix = pd.date_range(start=pd.Timestamp(2020, 1, 1), periods=4)
df = pd.DataFrame(index=ix, columns=['D/D CHANGE'], data=[-1, 0, 2, 5])

df.style.apply(background_with_norm)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...