Django

2015-07-23 5 views
7

में इंटरैक्टिव नियंत्रण के साथ बोकेह चार्ट बनाओ मैं जो अंततः एम्बेडेड बोकेह दृश्यावलोकन का उपयोग करता है एक Django आवेदन किया है।Django

<body> 
    {{the_div|safe}} 

    {{the_script|safe}} 
</body> 

this stackoverflow question के लिए धन्यवाद:

अभी मैं bokeh.embed.components समारोह और की तरह एक टेम्पलेट का उपयोग करके मिलता है।

बात यह है कि अब मैं और अधिक इंटरैक्टिव दृश्यावलोकन बनाने के लिए, स्लाइडर, चेक बॉक्स और अन्य नियंत्रण जोड़ने की आवश्यकता होगी है।

This example, जो मैं चाहता की तरह लग रहा मुद्दों के एक जोड़े के लिए छोड़कर:

  1. मैं Django अंदर वस्तु उस तरह एम्बेड करने के लिए कैसे पता नहीं है। मैं कहूंगा कि this जाने का रास्ता है, लेकिन शायद यह नहीं है।
  2. मैं थोड़ा इस के लिए बोकेह-सर्वर का उपयोग करने के बारे में संदेह में हूँ। क्या कोई उपयोग में आसान शुद्ध जावास्क्रिप्ट समाधान नहीं है?

तो, संक्षेप में, मैं जानना चाहता हूं कि डीजेंगो और बोके का उपयोग करके गतिशील चार्ट इंटरैक्शन बनाने के लिए मानक दृष्टिकोण क्या है।


सर्वर के बिना

आप जे एस में अपडेट प्रदर्शन कर सकते हैं, तो (वास्तविक अजगर कोड कॉल करने के लिए की जरूरत नहीं है), तो यह बहुत आसान है:

+0

चार्ट के लिए शुद्ध जावास्क्रिप्ट समाधान? d3.js की तरह कुछ? –

+0

मैं एक उच्च स्तर पर मेरी अजगर कोड से .js बनाने के लिए बोकेह उम्मीद कर रही थी। यह मेरे "अधिक स्थिर" ग्राफ के साथ पहले से ही बहुत अच्छा प्रदर्शन करता है। – NublicPablo

+0

एक विकल्प [बोकेजेजेएस] (http: //bokeh.pydata का उपयोग करना है।संगठन/एन/नवीनतम/दस्तावेज़/संदर्भ/bokehjs.html) और ग्राहक में सबकुछ करें (बस जेसन का उपयोग करके अपना डेटा पास करें)। दस्तावेज अभी भी चल रहा है और अभी इसका उपयोग करना बहुत आसान नहीं है, लेकिन [सरल उदाहरण] (http://jsfiddle.net/bokeh/9GhAp/) ढूंढना आसान है। – legaultmarc

उत्तर

2

दो उपयोग के मामलों रहे हैं CustomJS callbacks का उपयोग करके इंटरैक्शन जोड़ने के लिए। उस लिंक पर उदाहरण के बहुत सारे हैं, लेकिन एक बुनियादी सरल कोड नमूना की तरह दिखता है:

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) 

यह एक Bokeh भूखंड और एक स्लाइडर, कि स्लाइडर की प्रतिक्रिया में भूखंड अद्यतन करता है के साथ एक स्टैंडअलोन HTML दस्तावेज़ पैदा करेगा, किसी सर्वर की आवश्यकता नहीं है (यानी आप इसे किसी को ईमेल कर सकते हैं या इसे स्थिर पृष्ठ पर सेवा दे सकते हैं और यह काम करेगा)।


सर्वर

आप विजेट, बातचीत, आदि वास्तविक अजगर कोड (जैसे scikit-जानने के लिए, या पांडा) ड्राइव करने के लिए चाहते हैं के साथ तो आप Bokeh सर्वर का उपयोग करने की जरूरत है। खुशी से संस्करण 0.11 के रूप में नए सर्वर और अधिक मजबूत, performant, स्केलेबल, और सरल उपयोग करने के लिए है। आप कई लाइव तैनात Bokeh अनुप्रयोगों (अपने स्रोत कोड के लिंक के साथ) देख सकते हैं यहां:

http://demo.bokehplots.com/

साथ ही प्रलेखन यहाँ में तैनाती के विभिन्न प्रकार के बारे में विस्तृत प्रलेखन:

http://bokeh.pydata.org/en/0.11.1/docs/user_guide/server.html

+0

का उपयोग क्यों नहीं करते हैं ऐसा लगता है कि 'कस्टमजेएस' जो मैं ढूंढ रहा था, लेकिन यह मुझे लगता है कि सवाल पूछने के बाद इसे जोड़ा गया है। बस पूर्णता के लिए, यह किस संस्करण से उपलब्ध है? – NublicPablo

+0

एक प्रारंभिक संस्करण '0.9' में दिखाई दिया लेकिन वर्तमान संस्करण' 0.10' के बाद से मौजूद है – bigreddot