2016-07-05 15 views
0

私はこれに助けが必要です。 プロットは問題ありませんが、私がポイント上でホバリングしている場合、S &Pの価格がy(これは正しい)ですが、xの代わりにタイムスタンプを取得します。 それを修正できる人はいますか?ありがとう!日付ラベルをmpld3でプロットする

import matplotlib.pyplot as plt 
import mpld3 
from mpld3 import plugins 
import pandas.io.data as pdweb 
import datetime 
mpld3.enable_notebook() 
%matplotlib inline 


price = pdweb.get_data_yahoo("^GSPC",start = datetime.datetime(2014,1,1),end=datetime.datetime(2016,6,30))['Adj Close'] 
fig, ax = plt.subplots(figsize=(12,8)) 
ax.plot(price.index, price, lw=1) 
points = ax.scatter(price.index, price, alpha=0.1) 
plugins.connect(fig, plugins.LineLabelTooltip(points)) 

答えて

1

これはおそらく最良の方法ではありませんが、それは動作します:

series = ax.plot(price) 
date_axis = [pd.to_datetime(str(date)).strftime('%Y.%m.%d') for date in series[0].get_data()[0]] 
labels = [(date, " {0}".format(val)) for date, val in zip(date_axis, series[0].get_data()[1])] 

したがって、上記の混乱よりも、それは少し明確にするための手順で:

1)プロットの価格シリーズ

2)datatime64(シリーズのx軸)のnumpy.ndArrayで各日付をとり、それを文字列にする。

string_dates = [str(date) for date in series[0].get_data()[0]] 

3)次に、文字列をpandas datetimeに変換します。

dates = [pd_to_datetime(date) for date in string_dates] 

4)その後、私は、これはほぼ確実にこれを行うための効率的な方法ではないと述べたが、それは働いていたと同じように、各日付文字列をフォーマットするのstrftime()を使用してdate_axis

date_axis = [date.strftime('%Y.%m.%d') for date in dates] 

にそれを保存しますしばらくそれを把握しようとした後、一時的な解決策として私のために。だからこそこれを見つけたので、手をつないではいけない。

+0

ありがとうございますが、私はこのエラーが発生しました。それを解決する方法は何ですか?もう一度ありがとう – MrFed

+0

AttributeError: 'str'オブジェクトに属性がありません 'strftime' – MrFed

関連する問題