我动态生成一个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。这可能吗?
答案 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)