39

日付 (datetime オブジェクト) のインデックス配列 (x) と実際の値 (y: 債券価格) の配列があります。やっている(iPythonで):

plot(x,y)

日付でラベル付けされた x 軸を持つ完全に細かい時系列グラフを生成します。今のところ問題ありません。しかし、特定の日付にテキストを追加したいです。たとえば、2009 年 10 月 31 日に「イベント 1」というテキストを表示し、その日付のy値を 矢印で示したいとします。

text()annotate( )に関するMatplotlibのドキュメントを読みましたが、役に立ちませんでした。標準の番号付き x 軸のみをカバーしており、私の問題でこれらの例をどのように処理するかを推測することはできません。

ありがとうございました

4

1 に答える 1

77

Matplotlib は、日付に内部浮動小数点形式を使用します。

日付をその形式に変換し (matplotlib.dates.date2numまたはmatplotlib.dates.datestr2numを使用)、annotate通常どおり使用するだけです。

やや過度に派手な例として:

import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

x = [dt.datetime(2009, 05, 01), dt.datetime(2010, 06, 01), 
     dt.datetime(2011, 04, 01), dt.datetime(2012, 06, 01)]
y = [1, 3, 2, 5]

fig, ax = plt.subplots()
ax.plot_date(x, y, linestyle='--')

ax.annotate('Test', (mdates.date2num(x[1]), y[1]), xytext=(15, 15), 
            textcoords='offset points', arrowprops=dict(arrowstyle='-|>'))

fig.autofmt_xdate()
plt.show()

ここに画像の説明を入力

于 2012-06-17T00:30:01.453 に答える