我最近遇到了一个非常强大的互动式在线情节系统。所以我在考虑将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轴。但是当我试图将这个数字转换成情节时。
mpl_fig2= plt.gcf()
py.iplot_mpl(mpl_fig2,strip_styple = True,filename='test')
我看到代码错误,例如“min()arg是一个空序列”,有时这个“year = 1是在1900之前; datetime strftime()方法需要年份> = 1900”
答案 0 :(得分:1)
完全披露,我为Plotly工作。
<强> TL; DR:强>
在你的终端中运行它,它应该被修复:
pip install --upgrade plotly
<强>上下文强>
所以,pandas可以在matplotlib中做一些有趣的事情。这就是matplotlib如何处理日期,基本上:
第1年第1天的utc是浮点1.0
http://matplotlib.org/api/dates_api.html#module-matplotlib.dates
根据您使用pandas格式化日期的方式,最终可能会有一个pandas TimeSeries_DateFormatter。据我所知,对此的影响实际上是将与日期时间相关的基础数据更改为以下约定:
1970年第1天的utc是浮点数0.0
所以,从纪元(http://en.wikipedia.org/wiki/Unix_time)开始的几天(不是秒!)。 Fyi,这可以通过使用负数回到〜9-22-1677
。
<强>问题:强>
plotly将matplotlib中的日期时间视为matplotlib日期时间,但是pandas添加了一个更改此格式的格式化程序。在1.4.2
中添加了一个补丁