2017-09-26 20 views
0

私の次のビジュアライゼーションでは、スライダーとループの値を自動的に最後まで到達させるための再生ボタンが必要です。それを達成する方法はありますか?ありがとう。Python Bokehはスライダーに再生ボタンを追加します

expacted結果は、このリンク上のグラフのようなものです:あなたはボケのgithubの上のすべてのアプリケーションのコードを見つけることができますhttps://demo.bokehplots.com/apps/gapminder

# Bokeh Visualisation (0.12.7) 

from bokeh.charts import Scatter, output_file, show 
from bokeh.plotting import figure, output_file, show, ColumnDataSource 
from bokeh.io import output_file, show 
from bokeh.layouts import layout, widgetbox, column, row 
from bokeh.models import Toggle, BoxAnnotation, NumeralTickFormatter, CategoricalColorMapper 
from bokeh.models import HoverTool 
from bokeh.models.widgets import RadioButtonGroup, Slider 
from bokeh.models.callbacks import CustomJS 

dataset = {'x':[0,1,2],'y':[0,1,2], 'x_filter':[0,1,2]} 

source2 = ColumnDataSource(data=dataset) 


p2 = figure(plot_width=600, plot_height=600, 
      x_range=(-5,50), y_range=(-5,10)) 

p2.scatter('x', 'y', source=source2, 
      size=15, 
      alpha=0.8, 
      line_color=None) 

p2.title.text = 'old title' 

# add callback to control 
callback = CustomJS(args=dict(p2=p2, source2=source2), code=""" 

      var slider_value = cb_obj.value; 
      var data = source2.data;    
      x = data['x'] 
      x_filter = data['x_filter'] 
      y = data['y'] 

      for (i = 0; i < x.length; i++) { 
       x[i] = x_filter[i]+slider_value 
      } 

      p2.title.text = 'new title' 

     source2.change.emit(); 

     """) 

slider = Slider(start=0, end=50, value=0, step=5, title="test", callback=callback) 


show(column(widgetbox(slider),p2)) 

答えて

0

、ここにあなたがいるgapminder https://github.com/bokeh/bokeh/blob/master/examples/app/gapminder/main.py

ですそれを探しています(それはbokehサーバーを使用しています)。

def animate_update(): 
    year = slider.value + 1 
    if year > years[-1]: 
     year = years[0] 
    slider.value = year 


def slider_update(attrname, old, new): 
    year = slider.value 
    label.text = str(year) 
    source.data = data[year] 

slider = Slider(start=years[0], end=years[-1], value=years[0], step=1, title="Year") 
slider.on_change('value', slider_update) 


def animate(): 
    if button.label == '► Play': 
     button.label = '❚❚ Pause' 
     curdoc().add_periodic_callback(animate_update, 200) 
    else: 
     button.label = '► Play' 
     curdoc().remove_periodic_callback(animate_update) 

button = Button(label='► Play', width=60) 
button.on_click(animate) 
関連する問題