pandas 命令Series.plot.bar 接受color 关键字,您可以在其中输入颜色列表(RGBA 或颜色名称)。我不完全确定当列表太短时命令遵循什么逻辑,但如果列表长度合适,它会起作用。
示例:
%matplotlib inline
import pandas as pd
this_series = pd.Series([0.5, 0.6, 0.1, 0.1, 0.05, 0.05, 0.7, 0.3, 0.2], name='foo')
this_series.plot.bar(color=['blue','black', 'brown', 'red','red','green','yellow'])
编辑:
从您的cmets,我想我可以理解您的问题。将来,请帮助社区通过制定更清晰的问题来帮助您。
要绘制每月值的总和,您的数据结构如示例中所示,您可以这样做:
数据(请参阅 - 一个仍然足以使用的最小示例):
df = pd.DataFrame(columns = ['hour_formatted', '11_jan_18', '13_jan_18', '14_mar_18'],
data = [['00:00', 3, 3, 4], ['00:01', 6, 3, 4], ['00:01', 100, 300, 500]])
“小时”是不需要的,我们可以将每天的数据值求和(毕竟,我们会按月求和……或者我认为是这样)。
df2 = df.drop('hour_formatted', axis=1).sum()
之后,我们只需要从一天开始的月份。在您的格式中,它是 '_' 拆分时的第二项:
df2.index = [x.split('_')[1] for x in df2.index]
df2.index.rename('month', inplace=True)
之后,您可以按月分组 (see groupby from docs),并绘制条形图:
df3 = df2.reset_index().groupby('month').sum()[0] # the [0] part is to take first column from a dataframe that's created here. There might be a more elegant way
df3.plot.bar(color=['black', 'red'])