用Plotly绘制不同的组

时间:2017-05-12 15:55:45

标签: python plot plotly

我在python中有一个看起来有点像这样的数据框:

Device   Date      Reading
Device1  1/02/17   100.33
Device1  2/02/17   300.23
Device1  3/02/17   99.00
Device2  1/02/17   11.24
Device2  2/02/17   654.00
Device2  3/02/17   4543.4
Device3  1/02/17   3243.5
Device3  2/02/17   545.43
Device3  3/02/17   4545.0

它基本上有设备,日期和阅读。它比我给出的片段大得多。

我正在尝试绘图,最好是使用plotly,因为它是交互式的,允许我缩放等,这是这类数据集的理想选择。

我想在X轴上绘制日期,在Y轴上绘制,并为每个带图例的设备绘制单独的线条(颜色不同)。但是,一切都在一个数据框中,我不想手动添加痕迹,这会因为我的数据集的大小而需要很长时间。

我已经搜索了高低解决方案,似乎没有任何工作。我已经尝试了这个阴谋网站,袖扣,但它看起来相当复杂,并且在网上有很少的信息(对于袖扣)。在R中,我会做类似colour=device之类的事情来表示我希望不同它按设备排序,但我似乎无法用Python来解决它。

有人可以提醒(记住一切都在一个数据框中)吗?

1 个答案:

答案 0 :(得分:0)

我发现使用pd.groupby('Device')是一种在循环中生成跟踪的非常方便的方法。

import pandas as pd
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode

init_notebook_mode()

df = pd.read_clipboard()

grouped = df.groupby('Device')
data = [go.Trace(dict(x=values['Date'], y=values['Reading'], name=key,
                       mode='line')) for key, values in grouped]
iplot(data)

您也可以通过预先定义设备的字典来设置所需的颜色:例如。