当值为True时,如何在线图上绘制多个axvspan或vspan

时间:2019-10-30 19:14:55

标签: python python-3.x pandas matplotlib plotly

我正试图在折线图上突出显示一条线,该线具有一个股价线,然后是一个位于股价线上方和下方的区域。

每当股票价格超出区间时,我有一栏的值为“ 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

0 个答案:

没有答案