web-dev-qa-db-ja.com

matplotlibプロットで、特定のx値の範囲を強調表示できますか?

プロジェクトの過去の在庫データを視覚化しています。ドロップの領域を強調表示したいと思います。たとえば、株価が大幅にドローダウンしている場合、赤い領域で強調表示したいと思います。

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

40
Alex

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

日付を使用している場合は、xの最小値と最大値をmatplotlibの日付に変換する必要があります。使用する matplotlib.dates.date2num for datetimeオブジェクトまたは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

73
Joe Kington