Странное поведение cmap background_gradient - PullRequest
0 голосов
/ 28 августа 2018

Я нашел и использую @mrandrewandrade отличный ответ , чтобы отобразить коэффициенты корреляции данных о бостонском корпусе с использованием стилизованного кадра данных panda в записной книжке iPython, когда я заметил, что отображение цветов используется в background_gradient() неправильно рассчитывается для данных CHAS. Также похоже, что некоторые значения в данных B также затронуты.

Правильно по оси, переданной в команду background_gradient(cmap, axis=1), но не по другой оси. Ось строки будет работать, если вы измените эту строку на axis=0. Все остальные ячейки таблицы выглядят нормально.

Может кто-нибудь помочь разобраться в проблеме, я в тупике о том, что происходит и как этого избежать?

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# load Boston housing data into a dataframe
from sklearn.datasets import load_boston
boston = load_boston()
bos = pd.DataFrame(boston.data, columns=boston.feature_names)
bos['MEDV'] = boston.target
bos.head()

enter image description here

# using a styled panda's dataframe from https://stackoverflow.com/a/42323184/1215012
cmap = 'coolwarm'

def magnify():
    return [dict(selector="th", props=[("font-size", "7pt")]),
            dict(selector="td", props=[('padding', "0em 0em")]),
            dict(selector="th:hover", props=[("font-size", "12pt")]),
            dict(selector="tr:hover td:hover", 
                 props=[('max-width', '200px'), ('font-size', '12pt')])
]

corr.style.background_gradient(cmap, axis=1)\
    .set_properties(**{'max-width': '80px', 'font-size': '10pt'})\
    .set_caption("Hover to magify")\
    .set_precision(2)\
    .set_table_styles(magnify())

enter image description here

Чтобы подчеркнуть проблему, приведены те же данные, что и на карте тепловых нагрузок морского змея:

# calculating and plotting the correlation coeff's using a seaborn heatmap
corr = bos.corr()
sns.heatmap(corr, xticklabels=corr.columns, yticklabels=corr.columns, cmap='coolwarm')

enter image description here

1 Ответ

0 голосов
/ 20 февраля 2019

Я нашел этот вопрос, имея ту же проблему. Этот ответ решил мою проблему.

Короче говоря, кажется, что нет никакого способа использовать фактический метод DataFrame backgroud_gradient, но он не слишком сложен для достижения эффекта, который вы ищете с помощью пользовательской функции.

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