import numpy as np
from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, RangeTool
from bokeh.plotting import figure
from bokeh.sampledata.stocks import AAPL
dates = np.array(AAPL['date'], dtype=np.datetime64)
source = ColumnDataSource(data=dict(date=dates, close=AAPL['adj_close']))
p = figure(plot_height=300, plot_width=800, tools="", toolbar_location=None,
x_axis_type="datetime", x_range=(dates[1500], dates[2500]))
p.line('date', 'close', source=source)
p.yaxis.axis_label = 'Price'
select = figure(plot_height=150, plot_width=800, y_range=p.y_range,
x_axis_type="datetime", y_axis_type=None,
tools="", toolbar_location=None)
range_rool = RangeTool(x_range=p.x_range)
range_rool.overlay.fill_color = "navy"
range_rool.overlay.fill_alpha = 0.2
select.line('date', 'close', source=source)
select.ygrid.grid_line_color = None
select.add_tools(range_rool)
select.toolbar.active_multi = range_rool
show(column(p, select))
使用Python 3.6,Bokeh 0.13.0,Juptyer 5.5.0
尝试运行此代码,但是它给我“ ImportError:无法导入名称'RangeTool'”
如何解决此错误?
答案 0 :(得分:0)
如果您无法导入RangeTool
,则说明您100%遇到安装问题。常见的事情是将Bokeh 0.13.0安装在与当前运行Python的环境不同的Python环境中(可能是无意中)。这是尤其是与笔记本电脑一起使用的常见现象。我已经看到很多人在与笔记本电脑不同的环境中安装Bokeh,因此当他们运行笔记本电脑时,当然会看到其他一些较旧的Bokeh版本。您可以随时执行
print(bokeh.__version__)
确认您实际上正在使用您认为正在使用的版本。否则,如果报告0.13.0
,则说明安装被以某种方式破坏了。吹散site-packages
中与Bokeh相关的所有内容,然后重新安装。