2011-11-25 7 views
23

私はプロジェクトの履歴データを視覚化しています。私はドロップの領域を強調したいと思います。たとえば、株価が大幅に低下している場合は、赤色の領域で強調表示したいと考えています。matplotlibプロットでは、特定のx値の範囲を強調表示できますか?

これを自動的に行うことはできますか、または長方形などを描く必要がありますか?

+0

あなたは自動的に四角形を描画...あなたは既にあることを、強調表示領域の開始/停止を定義するxの値を持っていないだろうか?その場合は、Rectangleパッチを描いてそのセクションを強調表示することができます(例が必要な場合は教えてください) – Daan

答えて

45

axvspan(およびy軸の領域を強調表示するためのaxhspan)をご覧ください。

import matplotlib.pyplot as plt 

plt.plot(range(10)) 
plt.axvspan(3, 6, color='red', alpha=0.5) 
plt.show() 

enter image description here

あなたは日付を使用している場合は、日付をmatplotlibのためにあなたの最小値と最大値のx値を変換する必要があります。 datetimeオブジェクトにはmatplotlib.dates.date2num、さまざまな文字列タイムスタンプにはmatplotlib.dates.datestr2numを使用してください。

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

t = mdates.drange(dt.datetime(2011, 10, 15), dt.datetime(2011, 11, 27), 
        dt.timedelta(hours=2)) 
y = np.sin(t) 

fig, ax = plt.subplots() 
ax.plot_date(t, y, 'b-') 
ax.axvspan(*mdates.datestr2num(['10/27/2011', '11/2/2011']), color='red', alpha=0.5) 
fig.autofmt_xdate() 
plt.show() 

enter image description here

+0

私はx軸の日付を使用しています。任意のヒント? – Alex

+0

編集を参照してください。日付をmatplotlibの内部日付書式に変換する必要があります(1の範囲が1日に相当する浮動小数点数です)。これに対処するためのさまざまな関数の 'matplotlib.dates'を見てください。希望が助けてくれる! –

+0

3Dプロットでこれを行うことはできますか?私はz軸に沿った特定のスライスのXY平面を強調したいと思います。 – Kartik