2016-07-05 110 views
0

我需要此幫助。 情節是好的,但當我徘徊在點時,我得到了S的價格作爲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)地塊價格系列

series = ax.plot(price) 

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] 

就像我說的,這是幾乎可以肯定不是這樣做的有效方式,但它的工作對於我來說,暫時的解決辦法是試圖找出一段時間。在SO上找到這個地方,沒有鏈接到手。

+0

非常感謝,但我得到這個錯誤..任何想法如何解決它?再次感謝 – MrFed

+0

AttributeError:'str'對象沒有屬性'strftime' – MrFed