2017-09-28 7 views
1

Bokeh Server에서 Bokeh Stream을 사용할 때 비어있는 ColumnDataSource로 시작합니다. 그러나 축 레이블을 사용하지 않고 그림이 생성되고 축의 업데이트되는 데이터에도 불구하고 문제가 발생합니다 음모를 꾸미면 변함없이 그대로 남아 있습니다. 이것에 대한 해결책은 고정 된 x_range와 y_range를 갖는 것입니다. 그러나 끊임없이 스트리밍 중이기 때문에 고정되어 있기를 원하지 않습니다 ...Bokeh 스트리밍 축

해결책은 범위를 업데이트하는 것 같지만, 어떻게해야할지 모르십니까?

현재로서 다음에 내 코드 : 볼 수 있듯이 생성하지 않는 경우

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

을 업데이트되지 않습니다 축 + 라벨 앞에 min_border 속성이있는 패딩을 추가해야합니다. figure()

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)