kso*_*all 2 python matplotlib pandas seaborn
我的数据框
df = pd.DataFrame({'date': ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05'], 'b': ['a', 'a', 'b', 'b', 'c'], 'c': [1,2,3,4,5]})
date b c
0 2018-01-01 a 1
1 2018-01-02 a 2
2 2018-01-03 b 3
3 2018-01-04 b 4
4 2018-01-05 c 5
Run Code Online (Sandbox Code Playgroud)
我想绘制一个折线图,其中 X 是date,y 是c并且线的颜色基于b. 对于此示例,应该有 3 种不同的颜色,只要它们不同,实际颜色就无关紧要。
我虽然这会起作用,但它不允许按列更改颜色。
输出应该是一个行会改变颜色
您基本上想为 column 中的每个值创建一个新系列b。要做到这一点的方法之一是小组date和b再拆散b,另一种方法是使用pivot。然后只是绘制结果。
df.pivot(index='date', columns='b').droplevel(0, axis=1).plot(colors='rbc')
# 'rbc' = ['red', 'blue', 'cyan']
# These colors are based on the column ordering, e.g. 'a', 'b', 'c'.
Run Code Online (Sandbox Code Playgroud)
更明确的颜色:
colors = {
'a': 'red',
'b': 'blue',
'c': 'cyan'
}
(df
.pivot(index='date', columns='b')
.droplevel(0, axis=1)[colors.keys()]
.plot(colors=colors.values())
)
Run Code Online (Sandbox Code Playgroud)