import numpy as np
import pandas as pd
df = pd.DataFrame({"y" : np.random.rand(20)})
ax = df.iloc[:15,:].plot(ls = "-", color = "b")
ax2 = ax.twinx() #Create a twin Axes sharing the xaxis
df.iloc[15:,:].plot(ls = "--", color = "r", ax=ax)
plt.axhline(y=0.5,linestyle = "--",animated=True,label = "False Alaram")
plt.show()
Итак, первые 15 — это тренд, а последние 5 — прогнозы.
Я хочу разные цвета для тренда и пред в фоновом режиме. Кроме того, как я могу добавить текст «Исторический» и «Прогноз» на графике.
Я полагаю, вы ищете fill_between:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({"y" : np.random.rand(20)})
fig, ax = plt.subplots(figsize=(8,6))
df.iloc[:15,:].plot(ls = "-", color = "b", ax=ax)
plt.fill_between(df.iloc[:15].index.tolist(), df.iloc[:15].y.tolist(), alpha=.25, color='b')
df.iloc[15:,:].plot(ls = "--", color = "r", ax=ax)
plt.axhline(y=0.5,linestyle = "--", animated=True, label = "False Alaram")
plt.fill_between(df.iloc[15:].index.tolist(), df.iloc[15:].y.tolist(), alpha=.25, color='r')
plt.legend()
plt.show()
Я бы использовал для этого plt.annotate, что-то вроде plt.annotate('False Alaram', (0, 0.55))
. Также удалите строчку plt.legend()
, которую я добавил.
Это хорошо работает, спасибо. Еще одна вещь, как я могу добавить текст «Ложная тревога» на горизонтальной линии, т.е. y = 0,5, как на показанном эталонном изображении.