Python 避免在使用**KWD时更改打印颜色

Python 避免在使用**KWD时更改打印颜色,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我正在用python开发一些EDA,使用pandas绘制绘图。绘图的默认格式如下所示: 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",

我正在用python开发一些EDA,使用pandas绘制绘图。绘图的默认格式如下所示:

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()

但如果我做了一些更复杂的过滤,比如:

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:

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')
但我发现这里的颜色不一样:

也许你可以试试

s.plot.bar(color='#1f77b4')

您看到的是使用
条形图时,绘制
数据帧
与绘制
系列
的区别。您可以使用
s.to_frame().plot.bar()
系列
转换为
数据帧
,然后再打印以获得单一颜色:

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

系列:


您可以看到,在带有
数据框的条形图的情况下,颜色是每个
系列
的单个值,并且
系列
由列名标记。使用序列进行
条形图
打印时,将为每个索引循环一种新颜色,默认情况下不提供任何标签

我刚刚用pandas绘制了一个示例图,并在第一行对象上调用了
get_c()
。但也许gimp的移液管可以在更短的时间内达到同样的效果——在台式机上,而不是在移动设备上……)
plt.rcParams.get('axes.prop_cycle')
将按循环顺序为您提供默认
matplotlib
颜色列表。谢谢!这仅仅是熊猫的事情还是跨语言的普遍现象?@LuisRamonRamirezRodriguez我相信这是
pandas
开发者做出的决定。这种行为在他们的生活中被具体化了,像这样对待事情是有道理的。但是,当你第一次遇到这种情况时,你会感到有些不安。
df['col1'].plot(kind='bar')