2016-08-16 7 views
6

मैं एक बोके दस्तावेज़ को रीफ्रेश करना चाहता हूं ताकि मैं पुराने प्लॉट को नए लोगों के साथ बदल सकूं। हालांकि, अभी मुझे दस्तावेज़ में जोड़े गए नए भूखंड मिलते हैं, इसलिए पुराने लोग नहीं जाते हैं।बोके दस्तावेज़ को रीफ्रेश करने के लिए कैसे करें

#myfile.py 
from bokeh.plotting import curdoc, figure 
doc = curdoc() 
p1 = figure(width=1500, height=230, active_scroll="wheel_zoom") 
doc.add_root(p1) 
doc.clear() 
p2 = figure(width=1500, height=500, active_scroll="wheel_zoom") 
doc.add_root(p2) 

यह दूसरी साजिश में परिणाम है, पहले साजिश के बाद प्रदर्शित किया जा रहा है, हालांकि अपेक्षित व्यवहार मैं देख रहा हूँ दूसरा पहले साजिश की जगह साजिश है। मैं इसे कैसे हल करूं? मैं इस बोकेह के माध्यम से एक बोकेह सर्वर पर --show myfile.py

उत्तर

5

सबसे अच्छा तरीका कुछ इस तरह पूरा करने के लिए किया जाता है सामग्री आप है कि किसी तरह के एक शीर्ष स्तर लेआउट (जैसे row या column) के लिए चला रहा हूँ की सेवा इसके अंदर प्रतिस्थापित करना चाहते हैं। फिर जब आप चीजों को बदलने के लेआउट कंटेनर रखने के लिए, लेकिन इसके children संपत्ति के मूल्य बदलना चाहते हैं:

from bokeh.plotting import curdoc, figure 
from bokeh.layouts import row 

doc = curdoc() 

p1 = figure(width=1500, height=230, active_scroll="wheel_zoom") 

layout = row(p1) 
doc.add_root(layout) 

p2 = figure(width=1500, height=500, active_scroll="wheel_zoom") 

layout.children[0] = p2 

आप Crossfilter example में एक ऐसी ही तकनीक देख सकते हैं।

2

यदि कोई व्यक्ति कई तत्व (कहने, विजेट, अधिक आंकड़े, पंक्तियां इत्यादि) के दौरान बच्चों को लेआउट के लिए सेट करने के तरीके पर संघर्ष कर रहा है, तो आप तत्वों को लेआउट में लपेटकर और बच्चों को असाइन करके ऐसा कर सकते हैं संपत्ति सीधे:

p2 = figure(width=1500, height=500, active_scroll="wheel_zoom") 
p3 = figure(width=1500, height=500, active_scroll="wheel_zoom") 
new_layout = row(p2, p3) 
layout.children = new_layout.children 
संबंधित मुद्दे