熊猫绘制一个线图,在列上有颜色变化

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 种不同的颜色,只要它们不同,实际颜色就无关紧要。

我虽然这会起作用,但它不允许按列更改颜色。

输出应该是一个行会改变颜色

Ale*_*der 5

您基本上想为 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)

在此处输入图片说明