Я пытаюсь выделить на линейном графике, который имеет линию цены акций, а затем полосу выше и ниже линии цены акций.
У меня есть столбец, значение которого "1" каждыйвремя, когда цена акций превышает полосы, и Nan, когда цена акций находится между строк.
Я хочу выделить регионы, где значение равно «1», или когда цена акций превышает полосы. Это происходит несколько раз, и я не могу найти способ создать более одного vspan правильно.
Я пользуюсь пандами. Даты являются осью X и проиндексированы. Любая помощь с этим?
Я смотрю широко за последние сутки, но не вижу возможности. Я изо всех сил пытаюсь выяснить, как использовать для этого matplotlib.
В приведенном ниже коде я пытаюсь сравнить «OPEN» (столбец, который равен 1, если цена превышает полосу) и «AAPL.O", которая является переменной ric, которая является ценой закрытия
def add_SMA_bands(data,ric):
df = pd.DataFrame(data[ric])
SMAname = "SMA_{}".format(ric)
SMAstd = "SMAstd_{}".format(ric)
SMAUpper = "UpperBand_{}".format(ric)
SMALower = "LowerBand_{}".format(ric)
df[SMAname] = df["{}".format(ric)].rolling(SMA).mean()
df[SMAUpper] = df[SMAname] + (df["{}".format(ric)].rolling(SMA).std())*2
df[SMALower] = df[SMAname] - (df["{}".format(ric)].rolling(SMA).std())*2
return df
dfs={}
for ric in rics:
df = add_SMA_bands(data,ric)
df.dropna(inplace=True)
dfs[ric]=df
for ric in rics:
dfs[ric]["OVER"] = np.where(dfs[ric][ric]<dfs[ric]["LowerBand_{}".format(ric)],1, (np.where(dfs[ric][ric]>dfs[ric]["UpperBand_{}".format(ric)],1,0)))
dfs[ric]["OVER"][dfs[ric]["OVER"]==0]=np.nan