Избегайте панды менять цвета сюжета при использовании ** KWDS - PullRequest
0 голосов
/ 23 декабря 2018

Я работаю над EDA с питоном, используя панд для создания графиков.Форман по умолчанию для графиков выглядит следующим образом:

enter image description here

Но если бы я сделал более сложную фильтрацию, как это:

s = (coupon_list[[ 'USABLE_DATE_MON', 'USABLE_DATE_TUE', 'USABLE_DATE_WED',
       'USABLE_DATE_THU', 'USABLE_DATE_FRI', 'USABLE_DATE_SAT',
       'USABLE_DATE_SUN','DISCOUNT_PRICE']].melt("DISCOUNT_PRICE", var_name='days', value_name='data')
                .assign(days = lambda x: pd.Categorical(x['days'], 
                                                        ordered=True, 
                                                        categories=days))
                .query('data == 1')
                .groupby("days")['DISCOUNT_PRICE']
                .mean())

s.plot.bar()

Формат меняется на карнавал

enter image description here

Теперь я не знаю, как построить его в том же формате, что и остальные изображения.

Я пытался с аргументом сложения cmap:

s = (coupon_list[[ 'USABLE_DATE_MON', 'USABLE_DATE_TUE', 'USABLE_DATE_WED',
       'USABLE_DATE_THU', 'USABLE_DATE_FRI', 'USABLE_DATE_SAT',
       'USABLE_DATE_SUN','DISCOUNT_PRICE']].melt("DISCOUNT_PRICE", var_name='days', value_name='data')
                .assign(days = lambda x: pd.Categorical(x['days'], 
                                                        ordered=True, 
                                                        categories=days))
                .query('data == 1')
                .groupby("days")['DISCOUNT_PRICE']
                .mean())

s.plot.bar(cmap='Blues_r')

Но я не нахожу там те же цвета:

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

То, что вы видите, - это разница в построении графика DataFrame и Series при использовании графика bar.Вы можете использовать s.to_frame().plot.bar(), чтобы превратить вас Series в DataFrame до того, как вы построите график, чтобы получить один цвет:

import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': np.random.randint(1,10,20)})

DataFrame

df[['col1']].plot(kind='bar')

enter image description here

Серия:

df['col1'].plot(kind='bar')

enter image description here

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

0 голосов
/ 23 декабря 2018

Возможно, вы могли бы попробовать

s.plot.bar(color='#1f77b4')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...