在Python上使用matplotlib或plot.ly在线图/时间序列上绘制多行

时间:2017-10-22 05:04:21

标签: python matplotlib time-series plotly linechart

如何在matplotlib或plot.ly上绘制由分类变量表示的多条迹线?我试图从R复制geom_line(aes(x = Date,y = Value,color = Group)函数。

有没有办法在Python上实现这一点而无需将这些组放在单独的列中?我是否必须不可避免地重组数据?

我们说我有以下数据:

Date    Group   Value
1/01/2015   A   50
2/01/2015   A   60
1/01/2015   B   100
2/01/2015   B   120
1/01/2015   C   40
2/01/2015   C   55
1/01/2015   D   36
2/01/2015   D   20

我想在x轴上显示日期,在y轴上显示值,以及由不同颜色的线条/迹线表示的组类别。

感谢。

1 个答案:

答案 0 :(得分:2)

假设您的数据位于pandas数据帧df中,如果没有将这些组放在不同的列中,则很难绘制它,但这实际上是一个非常容易在一行中完成的步骤,

df.pivot(index="Date", columns="Group", values="Value").plot()

完整示例:

u = u"""Date    Group   Value
1/01/2015   A   50
2/01/2015   A   60
1/01/2015   B   100
2/01/2015   B   120
1/01/2015   C   40
2/01/2015   C   55
1/01/2015   D   36
2/01/2015   D   20"""

import io
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(io.StringIO(u), delim_whitespace=True)
df["Date"] = pd.to_datetime(df["Date"])

df.pivot(index="Date", columns="Group", values="Value").plot()

plt.show()

enter image description here