1

これについて助けが必要です。プロットは問題ありませんが、ポイントにカーソルを合わせると、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))
4

1 に答える 1

2

これはおそらく最良の方法ではありませんが、うまくいきます:

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) 次に、文字列をパンダの日時に変換します。

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の他の場所でこれを見つけました。手元にリンクがありません。

于 2016-07-24T13:57:51.943 に答える