2015-08-31 11 views
5

बोके के बारे में एक अच्छी बात यह है कि कॉलबैक को पायथन परत से निर्दिष्ट किया जा सकता है जिसके परिणामस्वरूप बोकेह-सर्वर की आवश्यकता के बिना जावास्क्रिप्ट स्तर पर कार्रवाई होती है। तो कोई इंटरेक्टिव विगेट्स बना सकता है जो किसी ब्राउज़र में आईपीथॉन या बोके सर्वर के बिना चल रहा है।बोके: विजेट्स के लिए कस्टमजेएस को पास करें

0.9.3। http://bokeh.pydata.org/en/latest/docs/user_guide/interaction.html#cutomjs-for-widgets

from bokeh.io import vform 
from bokeh.models import CustomJS, ColumnDataSource, Slider 
from bokeh.plotting import figure, output_file, show 

output_file("callback.html") 
x = [x*0.005 for x in range(0, 200)] 
y = x 

source = ColumnDataSource(data=dict(x=x, y=y)) 

plot = figure(plot_width=400, plot_height=400) 
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6) 

callback = CustomJS(args=dict(source=source), code=""" 
     var data = source.get('data'); 
     var f = cb_obj.get('value') 
     x = data['x'] 
     y = data['y'] 
     for (i = 0; i < x.length; i++) { 
      y[i] = Math.pow(x[i], f) 
     } 
     source.trigger('change'); 
    """) 

slider = Slider(start=0.1, end=4, value=1, step=.1, title="power", callback=callback) 

layout = vform(slider, plot) 
show(layout) 

मैं कुछ सरल ऑनलाइन कार्य बनाने के लिए इस तरह कोड अनुकूल करने के लिए करना चाहते हैं: प्रलेखन एक उदाहरण है कि मैं एक IPython नोटबुक में पुन: पेश कर सकते हैं देता है। मेरा सवाल यह है कि मैं स्लाइडर का आह्वान किए बिना सीधे पाइथन से जावास्क्रिप्ट तक अन्य चर कैसे पारित कर सकता हूं। उदाहरण लगता है के लिए मैं जावास्क्रिप्ट बनना चाहते हैं:

y[i] = Math.pow(x[i], A*f) 

जहां एक ऊपर (उदाहरण के एक के लिए = 10) एक IPython कोड कक्ष में परिभाषित किया गया था। जावास्क्रिप्ट में 'var A = 10' को परिभाषित करना काफी आसान है, लेकिन मैं अजगर में ए और अन्य चर के मान को सेट करना चाहता हूं और फिर उन्हें इस जावास्क्रिप्ट में पास करना चाहता हूं। क्या उधर रास्ता है?

उत्तर

5

बोके 0.9.3 के रूप में आप केवल "बोके मॉडल" (जैसे डेटा स्रोतों और प्रस्तुतकर्ताओं जैसी चीजें) पास कर सकते हैं, मनमानी पायथन वस्तुओं नहीं। लेकिन हम बोके दस्तावेजों को एक साधारण नेमस्पेस अवधारणा के साथ विस्तारित करने पर काम कर रहे हैं जिसे आसानी से प्रतिबिंबित किया जा सकता है।

+0

धन्यवाद, यह आश्चर्यजनक होगा। मैंने बोके सर्वर के साथ कुछ बुनियादी इंटरैक्टिव विज़ुअलाइजेशन बनाए हैं और Ipython में ipywidgets लाइब्रेरी से इंटरैक्ट (नोट [बोकेह दस्तावेज़] (http://bokeh.pydata.org/en/latest/docs/user_guide/notebook.html#id5) अब बहिष्कृत Ipython.html.widgets लाइब्रेरी को संदर्भित करता है, इसलिए इसे ipywidgets में बदला जाना चाहिए)। लेकिन अगर कोई उपर्युक्त समस्या को हल कर सकता है तो बिना पाइथन/बोकेह के लोगों के लिए इंटरैक्टिव सामग्री उत्पन्न करना और संशोधित करना आसान हो जाएगा। यह * कई विषयों में शिक्षण * क्रांतिकारी * कर सकता है। – JHuw

संबंधित मुद्दे