Могу ли я выделить определенные диапазоны значений x на графике matplotlib? - PullRequest
36 голосов
/ 25 ноября 2011

Я делаю визуализацию исторических данных о запасах для проекта, и я хотел бы выделить области капель.Например, когда акция испытывает значительную просадку, я хотел бы выделить ее красной областью.

Могу ли я сделать это автоматически, или мне нужно будет нарисовать прямоугольник или что-то еще?

1 Ответ

62 голосов
/ 25 ноября 2011

Посмотрите на axvspan (и axhspan для выделения области оси Y).

import matplotlib.pyplot as plt

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

enter image description here

Если выЕсли вы используете даты, то вам нужно будет конвертировать значения min и max x в даты matplotlib.Используйте matplotlib.dates.date2num для 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...