多个系列在轨迹中为情节

时间:2017-01-31 02:29:16

标签: python pandas plotly

我动态生成一个pandas数据框,其中列是月份,索引是日期,值是累积收入。这很简单,不过它只是一个月/ dom / rev的数据帧。

但是现在我想用阴谋来绘制它。由于每个月都会扩展列,我不想每月手动添加一个跟踪。但我似乎没有一个包含多列的跟踪。我可以发誓这是可能的。

 revs = Scatter(
  x=df.index,
  y=[df['2016-Aug'], df['2016-Sep']],
  name=['rev', 'revvv'],
  mode='lines'
)
data=[revs]
fig = dict( data=data)
iplot(fig)

这会生成一个空图,没有错误。理想情况下,我只是将df[df.columns]传递给y。这可能吗?

1 个答案:

答案 0 :(得分:3)

你可能在考虑cufflinks。您可以使用iplot函数使用Plotly绘制整个数据框,而无需数据复制。

另一种方法是使用pandas.plot获取matplotlib对象,然后通过plotly.tools.mpl_to_plotl y进行转换并绘制。整个过程可以缩短为一行:

plotly.plotly.plot_mpl(df.plot().figure)

输出几乎完全相同,只需要传说需要调整。

import plotly
import pandas as pd
import random
import cufflinks as cf

data = plotly.tools.OrderedDict()
for month in ['2016-Aug', '2016-Sep']:
    data[month] = [random.randrange(i * 10, i * 100) for i in range(1, 30)]

#using cufflinks
df = pd.DataFrame(data, index=[i for i in range(1, 30)])
fig = df.iplot(asFigure=True, kind='scatter', filename='df.html')
plot_url = plotly.offline.plot(fig)
print(plot_url)

#using mpl_to_plotly
plot_url = plotly.offline.plot(plotly.tools.mpl_to_plotly(df.plot().figure))
print(plot_url)

enter image description here