Python 如何同时显示两个Bokeh对象?

Python 如何同时显示两个Bokeh对象?,python,bokeh,Python,Bokeh,我正在尝试将Bokeh vbar与RangeTool结合使用。我尝试了许多不同的代码行,但仍然不起作用。我不理解“浏览器”的错误 相同的代码用于线条或散点 这就是错误: File "FromInt.py", line 6433, in testrangeVBar show(p,select) File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/io/showin

我正在尝试将Bokeh vbar与RangeTool结合使用。我尝试了许多不同的代码行,但仍然不起作用。我不理解“浏览器”的错误

相同的代码用于线条或散点

这就是错误:

File "FromInt.py", line 6433, in testrangeVBar
    show(p,select)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/io/showing.py", line 137, in show
    return _show_with_state(obj, state, browser, new, notebook_handle=notebook_handle)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/io/showing.py", line 165, in _show_with_state
  controller = get_browser_controller(browser=browser)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/util/browser.py", line 47, in get_browser_controller
  controller = webbrowser.get(browser)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/webbrowser.py", line 34, in get
    if '%s' in browser:
TypeError: argument of type 'Figure' is not iterable
TypeError:类型为“Figure”的参数不可编辑

代码如下:

from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, RangeTool
from bokeh.plotting import figure
from bokeh.models import Range1d

x = [1,2,3,4,5,6,7,8]
wdth = [0.5 for x in range(0,8)]
top = [8,7,6,5,4,3,2,1]

sourceRT5 = ColumnDataSource(data=dict(x=x, width=wdth, top=top))
p = figure(plot_height=300, plot_width=800, 
           tools="", toolbar_location=None,
           x_axis_type="linear")


p.vbar('x', 'width', 'top', bottom=0, line_color='dodgerblue', 
       fill_color="dodgerblue", legend='New Words',
        source=sourceRT5)

p.yaxis.axis_label = 'Price'

select = figure(plot_height=50, plot_width=800, y_range=(0,10),
                x_axis_type="linear",  y_axis_type=None,
                tools="", toolbar_location=None)

range_rool = RangeTool(x_range=Range1d(3,8))
range_rool.overlay.fill_color = "navy"
range_rool.overlay.fill_alpha = 0.2

select.vbar('x', 'width', 'top', source=sourceRT5)
select.ygrid.grid_line_color = None
select.add_tools(range_rool)
select.toolbar.active_multi = range_rool

show(p,select)
有关错误的详细信息:

File "FromInt.py", line 6433, in testrangeVBar
    show(p,select)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/io/showing.py", line 137, in show
    return _show_with_state(obj, state, browser, new, notebook_handle=notebook_handle)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/io/showing.py", line 165, in _show_with_state
  controller = get_browser_controller(browser=browser)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/bokeh/util/browser.py", line 47, in get_browser_controller
  controller = webbrowser.get(browser)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/webbrowser.py", line 34, in get
    if '%s' in browser:
TypeError: argument of type 'Figure' is not iterable

似乎您正在尝试显示多个图形。获取一个应该显示的对象,第二个参数是应该使用哪个浏览器(例如firefox、chrome、IE、vivaldi等)。当你写它的时候,我猜它没有抛出错误,但实际上并不起作用

博克有一些。简短的版本是,您需要告诉它应该以何种方式进行布局。一个非常普遍的功能是:


您是对的,我的分散示例确实有:show(column([p,select])和bokeh.layouts的column部分