0

我最近遇到了plotly,这是一个非常强大的交互式在线绘图系统。所以我正在考虑将matplot生成的图转换为plotly。除了时间序列图,一切都很好。

这是我的代码的简单版本。

import pandas as pd
import matplotlib.pyplot as plt
import plotly.plotly as py
import plotly.tools as tls
tls.set_credentials_file(
        username="edwinwang1988", 
        api_key="o8xw6s61dn")
import numpy as np

x = pd.date_range('1/1/2001',periods =72,freq='D')  # genrate a date range
Series = pd.DataFrame(x,columns=['Date']) # generate a date range data frame

np.random.seed(0)
col = ['A','B','C','D'] #set col names for return series
s = pd.DataFrame(np.random.randn(72,4),columns=col) # generate random return series with col names as col
for i in range(len(col)):
    s[col[i]] = s[col[i]].cumsum()

s['Date']=x  # add date to dataframe s
s.plot(x='Date') # plot s and set date as x axis

这工作正常,并给我我想要的日期作为 x 轴的情节。但是当我试图将数字转换为 plotly 时。

mpl_fig2= plt.gcf()
py.iplot_mpl(mpl_fig2,strip_styple = True,filename='test')

我看到像“min() arg is an empty sequence”这样的代码错误,有时这个“year=1 在 1900 之前;datetime strftime() 方法需要 year >= 1900”

4

1 回答 1

1

完全披露,我为 Plotly 工作。

tl;博士:

在您的终端中运行它,它应该被修复:

pip install --upgrade plotly

语境:

所以,pandas 可以在 matplotlib 中对日期做一些有趣的事情。这就是 matplotlib 处理日期的方式,基本上:

UTC 中第 1 年的第 1 天是浮点 1.0

http://matplotlib.org/api/dates_api.html#module-matplotlib.dates

根据您使用 pandas 格式化日期的方式,您最终可以使用 pandas TimeSeries_DateFormatter。据我所知,这样做的后果实际上是将与日期时间关联的基础数据更改为以下约定:

UTC 中 1970 年的第 1 天是浮点数 0.0

因此,自纪元 ( http://en.wikipedia.org/wiki/Unix_time ) 以来的天数(不是秒数! )。9-22-1677仅供参考,这可以通过使用负数回到 ~ 。

问题:

plotly 将 matplotlib 中的日期时间视为 matplotlib 日期时间,但 pandas 添加了一个格式化程序来改变这一点。在 plotly 1.4.2 中添加了一个补丁

于 2014-11-11T08:31:05.253 回答