我需要帮助。 情节很好,但是当我在点上方盘旋时,我得到S& P价格为y(这是正确的)但是我没有得到时间戳作为x的日期。 有没有人能够解决它?谢谢!
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))
答案 0 :(得分: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的numpy.ndArray中(系列的x轴),并将其作为字符串。
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的其他地方找到了这个,没有链接。