散景流轴

时间:2017-09-28 16:34:26

标签: python bokeh

当我在Bokeh服务器上使用Bokeh Stream时,我从一个空的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 个答案:

答案 0 :(得分: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)