2017-09-28 98 views
1

當我在散景服務器上使用散景流時,我從一個空的ColumnDataSource開始 - 但是,這會產生一個問題,因爲隨後會生成沒有軸標籤的圖形,儘管繪圖中的數據正在更新軸在繪製時保持不變。似乎解決方案是有一個固定的x_range和y_range - 但是,因爲它不斷流,我不希望它被固定...散景流軸

我想解決方案是更新範圍,但我'米不知道如何做到這一點?

我的代碼目前是如下:

source_ios = ColumnDataSource({'Date': [], 'Vol': []}) 
source_gp = ColumnDataSource({'Date': [], 'Vol': []}) 

ios = figure(toolbar_location=None, x_axis_type='datetime',plot_width=800, plot_height=250) 

ios.circle(x='Date',y='Vol', fill_color="pink",line_color=None, fill_alpha=0.05, size=20, source=source_ios) 

def update(): 
    MAU_ios = pd.read_csv('myapp/data/pplus_ios_data.csv') 
    MAU_ios['Date'] = pd.to_datetime(MAU_ios['Date']) 
    MAU_ios['Vol'] = MAU_ios.Vol.astype(int) 

    new_MAU_ios = {'Date':MAU_ios['Date'], 'Vol':MAU_ios['Vol']} 
    source_ios.stream(new_MAU_ios) 

curdoc().add_periodic_callback(update, 8000) 

curdoc().add_root(ios 

圖表看起來像這樣,可以看出軸不會自動更新

enter image description here

回答

1

如果不創建軸+標籤事先您需要添加一些填充figure()min_border屬性

from bokeh.io import curdoc 
from bokeh.plotting import figure 
from bokeh.models import ColumnDataSource 
from random import random 

source_ios = ColumnDataSource({'Date': [], 'Vol': []}) 

ios = figure(toolbar_location=None,plot_width=800, plot_height=250) 
ios.xaxis.axis_label = 'Date' 
ios.yaxis.axis_label = 'Vol' 
ios.min_border_left = 50 
ios.min_border_bottom = 50 

ios.circle(x='Date',y='Vol',color="pink", size=20, source=source_ios) 

i=0 
def update(): 
    global i 
    new_MAU_ios = {'Date':range(i,i+10),'Vol':[random() for j in range(10)]} 
    source_ios.stream(new_MAU_ios) 
    i+=10 

curdoc().add_periodic_callback(update, 8000) 

curdoc().add_root(ios)