2015-09-26 69 views
2

我想添加標記到我的散景圖中,這裏是我的示例代碼,信號表具有值1和0的位置列,如果位置== 1我需要將標記添加到我的TimeSeries圖表。我如何做到這一點,而不使用傳統的matplotlib繪圖,而只是使用Bokeh界面?散景圖上的多個圖表

def bokeh_chart(symbol, bars, signals, returns): 

    xyvalues = pd.DataFrame({ 
     "Price": bars['Close'], 
     "Date": bars.index.values, 
     "short_mavg": signals['short_mavg'], 
     "long_mavg": signals['long_mavg']}) 


    pt = TimeSeries(xyvalues, index='Date', legend=True, 
     title=symbol , ylabel='Stock Prices', width=400, height=200) 

    #for Scatter, is it possible to be have a dataframe for x and y parameter (1st and 2nd parameters in the function below)? 
    p = Scatter(signals, signals.ix[signals.positions == 1.0].index, signals.short_mavg[signals.positions == 1.0], marker='triangle') 

    script,div=components(p) 
    return {"script":script, "div":div} 

回答

0

要與分散,這爲我工作(使用背景虛化0.11.1)是使用基本字形,而不是圖表的解決方案結合圖表時間序列。在您的例子中,你將使用的figurex_axis_type="datetime"參數和基本字形line不是圖表TimeSeries,並且使用的字形,而不是triangle圖表Scatter的。

from bokeh.plotting import figure 

p = figure(title="My title", width=400, height=200, 
      x_axis_type="datetime") 

p.yaxis.axis_label = "Stock Prices" 
p.yaxis.axis_label = "Date" 

p.triangle(xyvalues['Date'], xyvalues['short_mavg'], legend="short") 

p.line(xyvalues['Date'], xyvalues['Price'], legend="price") 

我希望它也可以幫助你的情況。

+0

從Bokeh'0.12'(今天發佈)開始'Charts'具有所有相同的字形函數(例如,'circle','line'),並且可以用來直接在圖表上繪製。 – bigreddot