नीचे दिए गए उदाहरण में, मैं एक्स और वाई निर्देशांक प्राप्त करने की कोशिश कर रहा हूं जो प्लॉट के बगल में डिव में दिखाई देते हैं जब बोके प्लॉट को उनकी संबंधित सूची में डेटा डिक्शनरी समन्वय सूची में जोड़ने के लिए टैप किया जाता है।

import numpy as np
from bokeh.io import show, output_notebook
from bokeh.plotting import figure
from bokeh.models import CustomJS, Div
from bokeh.layouts import column, row
from bokeh.events import Tap

coordList = dict(x=[], y=[])

output_notebook()

def display_event(div, attributes=[], style = 'float:left;clear:left;font_size=10pt'):
    "Build a suitable CustomJS to display the current event in the div model."
    return CustomJS(args=dict(div=div), code="""
        var attrs = %s; var args = [];
        for (var i = 0; i<attrs.length; i++) {
            args.push(Number(cb_obj[attrs[i]]).toFixed(2));
        }
        var line = "<span style=%r>(" + args.join(", ") + ")</span>\\n";
        var text = div.text.concat(line);
        var lines = text.split("\\n")
        if (lines.length > 35)
            lines.shift();
        div.text = lines.join("\\n");
    """ % (attributes, style))

x = np.random.random(size=4000) * 100
y = np.random.random(size=4000) * 100
radii = np.random.random(size=4000) * 1.5
colors = ["#%02x%02x%02x" % (int(r), int(g), 150) for r, g in zip(50+2*x, 30+2*y)]

p = figure(tools="pan,wheel_zoom,zoom_in,zoom_out,reset")
p.scatter(x, y, radius=np.random.random(size=4000) * 1.5,
          fill_color=colors, fill_alpha=0.6, line_color=None)

div = Div(width=400, height=p.plot_height)
layout = row(p, div)

point_attributes = ['x', 'y']

p.js_on_event(Tap, display_event(div, attributes=point_attributes))

show(layout)

मुझे यकीन नहीं है कि निर्देशांक कैसे सहेजे जाते हैं और उन्हें कैसे एक्सेस किया जाए और उन्हें सूचियों में कैसे जोड़ा जाए।

0
qamarf 5 सितंबर 2019, 00:27

1 उत्तर

ऊपर की तरह कोड के साथ एक पायथन ऑब्जेक्ट में निर्देशांक जोड़ने का कोई तरीका नहीं है, क्योंकि वह कोड स्टैंडअलोन आउटपुट उत्पन्न कर रहा है (यानी यह "शो" का उपयोग कर रहा है)। स्टैंडअलोन आउटपुट शुद्ध स्थिर HTML और बोकेह JSON है जो किसी भी पायथन प्रक्रिया के किसी भी प्रकार के कनेक्शन के बिना ब्राउज़र पर भेजा जाता है। अगर आप बोकेह विज़ुअलाइज़ेशन को वास्तविक चलने वाली पायथन प्रक्रिया से जोड़ना चाहते हैं, तो अर्थात बोकेह सर्वर किसके लिए है

यदि आप एक बोकेह सर्वर एप्लिकेशन चलाते हैं, तो आप एक वास्तविक पायथन कॉलबैक के साथ on_event का उपयोग कर सकते हैं, जो कि आप जो भी पायथन कोड चाहते हैं उसे टैप इवन वैल्यू के साथ चलाने के लिए:

def callback(event):
    # use event['x'], event['y'], event['sx'], event['sy']

p.on_event(Tap, callback)
1
bigreddot 5 सितंबर 2019, 02:41
जैसा कि आप वर्णन करते हैं, मैंने एक पायथन कॉलबैक का उपयोग करने का प्रयास किया है, लेकिन मुझे त्रुटि संदेश मिलता है: `चेतावनी: bokeh.embed.util: आप स्टैंडअलोन एचटीएमएल/जेएस आउटपुट उत्पन्न कर रहे हैं, लेकिन वास्तविक पायथन कॉलबैक (यानी on_change या on_event के साथ) का उपयोग करने का प्रयास कर रहे हैं ) यह संयोजन काम नहीं कर सकता। ' क्या ऐसा इसलिए है क्योंकि मैं इसे सहयोग में करने की कोशिश कर रहा हूं? क्या वहां बोकेह सर्वर चलाने का कोई तरीका है?
 – 
qamarf
5 सितंबर 2019, 04:28
क्या आप show को फ़ंक्शन पास कर रहे हैं? नोटबुक में बोकेह सर्वर ऐप्स को व्यवस्थित करने का अपना विशेष आवश्यक तरीका है। यह मानते हुए कि आप नवीनतम बोकेह का उपयोग कर रहे हैं, आपका कोड इस उदाहरण जैसा दिखना चाहिए: github.com/bokeh/bokeh/blob/master/examples/howto/server_embed/… जहां तक ​​कोलाब का सवाल है, मुझे नहीं पता, आपको बस कोशिश करनी होगी। नियमित नोटबुक और जुपिटर लैब का समर्थन करना पहले से ही एक कठिन बोझ है, परियोजना के पास किसी भी आधिकारिक तरीके से कोलाब का समर्थन करने के लिए संसाधन नहीं हैं।
 – 
bigreddot
5 सितंबर 2019, 05:22
बीटीडब्ल्यू यह तथ्य कि आप कोलाब में थे (एक असामान्य स्थिति) महत्वपूर्ण थी, और इसे मूल प्रश्न में शामिल किया जाना चाहिए था। (यह संपूर्ण कारण हो सकता है कि चीजें इस मामले में काम नहीं करती हैं) साथ ही साथ प्रासंगिक संस्करण। यदि आप बोकेह के पुराने संस्करण का उपयोग कर रहे हैं, तो आपको उस उदाहरण नोटबुक के पुराने संस्करण का उल्लेख करने की आवश्यकता हो सकती है, उदाहरण के लिए, उदाहरण के लिए नोटबुक का नवीनतम संस्करण नई सुविधाओं का उपयोग कर सकता है जो बोकेह के आपके संस्करण में नहीं है। प्रश्नों में हमेशा संस्करण जानकारी सूचीबद्ध होनी चाहिए।
 – 
bigreddot
5 सितंबर 2019, 05:24