2012-06-16 17 views
20

私は、日付(datetimeオブジェクト)のインデックス配列(x)と実際の値の配列(y:債券価格)を持っています。 Doing(iPythonで):Matplotlibの時系列プロットのアノテーション

plot(x,y) 

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

私は無駄にテキスト()注釈のmatplotlibのドキュメント()トラフ読みました。これは標準的な番号付きのx軸だけをカバーしているので、私の問題でこれらの例をどのように動作させるかは推測できません。

ありがとうございました

答えて

40

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() 

enter image description here

+0

親愛なるジョー、素晴らしいです。ありがとうございました! – luffe

関連する問題