从一个数据框中绘制多条线

时间:2017-09-20 15:06:48

标签: python pandas bokeh

我想要在一个pandas数据框中绘制所有数据,例如:

         date flower_color  flower_count
0  2017-08-01         blue             1
1  2017-08-01          red             2
2  2017-08-02         blue             5
3  2017-08-02          red             2

我需要在一个图上有几条不同的线:x值应该是第一列的日期,y值应该是flower_count,而y值应该取决于第二列中给出的flower_color。

如何在不过滤原始df并首先将其保存为新对象的情况下如何做到这一点?我唯一的想法是只为红色花朵创建一个数据框,然后指定它:

figure.line(x="date", y="flower_count", source=red_flower_ds)
figure.line(x="date", y="flower_count", source=blue_flower_ds)

2 个答案:

答案 0 :(得分:5)

你可以试试这个

fig, ax = plt.subplots()
for name, group in df.groupby('flower_color'):
    group.plot('date', y='flower_count', ax=ax, label=name)

enter image description here

答案 1 :(得分:2)

如果我的理解是正确的,你需要一个带有两个子图的情节。两个子图的X是日期,Y是每种颜色的花数?

在这种情况下,您可以在pandas可视化中使用子图。

fig, axes = plt.subplots(2)
z[z.flower_color == 'blue'].plot(x=['date'], y= ['flower_count'],ax=axes[0]).set_ylabel('blue')
z[z.flower_color == 'red'].plot(x=['date'], y= ['flower_count'],ax=axes[1]).set_ylabel('red')

plt.show()

输出将如下:

enter image description here

希望它有所帮助。