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 軸として必要なプロットが得られます。しかし、図をプロットに変換しようとしたとき。

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;dr:

これを端末で実行すると、修正されるはずです。

pip install --upgrade plotly

環境:

そのため、パンダは 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 に答える