Czy na wykresie matplotlib mogę wyróżnić określone zakresy wartości x?

Robię wizualizację historycznych danych giełdowych dla projektu i chciałbym wyróżnić regiony kropli. Na przykład, gdy akcje notują znaczny spadek kapitału, chciałbym wyróżnić je czerwonym regionem.

Czy Mogę to zrobić automatycznie, czy będę musiał narysować prostokąt czy coś?

Author: Alex , 2011-11-25

1 answers

Spójrz na axvspan (i axhspan dla podkreślenia obszaru osi y).

import matplotlib.pyplot as plt

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

Tutaj wpisz opis obrazka

Jeśli używasz dat, musisz przekonwertować wartości min i max X NA daty matplotlib. Użyj matplotlib.dates.date2num dla obiektów datetime lub matplotlib.dates.datestr2num dla różnych znaczników czasu.

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

Tutaj wpisz opis obrazka

 49
Author: Joe Kington,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-25 19:38:30