Bokeh附带了许多交互式工具,可用于报告信息、更改打印参数(如缩放级别或范围范围)或添加、编辑或删除图示符。工具可分为四个基本类别:
这些工具可以响应单个手势,例如平移运动。手势工具的类型有:
平移/拖动工具
单击/点击工具
滚动/挤压工具
对于每种类型的手势,一个工具可以在任何给定的时间处于活动状态,并且激活的工具在工具栏上通过工具图标旁边的高亮显示来指示。
这些是即时或模式操作,只有在按下工具栏中的按钮时才会激活,例如 ResetTool .
ResetTool
这些是被动工具,以某种方式报告信息或注释绘图,例如 HoverTool 或 CrosshairTool .
HoverTool
CrosshairTool
这些是复杂的多手势工具,可以添加、删除或修改绘图上的字形。由于编辑工具可能一次对多个手势做出响应,因此当激活编辑工具时,它可能会同时停用多个单一手势工具。
除了有关所有单个工具的信息外,本章还介绍如何配置工具栏。
默认情况下,Bokeh绘图在绘图上方有一个工具栏。在本节中,您将学习如何为工具栏指定不同的位置,或如何完全删除它。
工具栏位置可以通过传递 toolbar_location 参数 figure() 功能。有效值:
toolbar_location
figure()
"above"
"below"
"left"
"right"
如果要完全隐藏工具栏,请通过 None .
None
下面是一些代码,用于将工具栏定位在绘图下方。尝试运行代码并更改 toolbar_location 价值。
from bokeh.plotting import figure, output_file, show output_file("toolbar.html") # create a new plot with the toolbar below p = figure(plot_width=400, plot_height=400, title=None, toolbar_location="below") p.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=10) show(p)
请注意,工具栏位置与默认轴冲突,在本例中,设置 toolbar_sticky 选择权 False 将工具栏移到绘制轴的区域之外。
toolbar_sticky
False
from bokeh.plotting import figure, output_file, show output_file("toolbar.html") # create a new plot with the toolbar below p = figure(plot_width=400, plot_height=400, title=None, toolbar_location="below", toolbar_sticky=False) p.circle([1, 2, 3, 4, 5], [2, 5, 8, 2, 7], size=10) show(p)
最低的 bokeh.models 级别,工具被添加到 Plot 通过传递的实例 Tool 对象到 add_tools 方法:
bokeh.models
Plot
Tool
add_tools
plot = Plot() plot.add_tools(LassoSelectTool()) plot.add_tools(WheelZoomTool())
这种添加工具的显式方法适用于任何Bokeh Plot 或 Plot 子类,例如 Figure .
Figure
通过传递 tools 参数 figure() 功能。tools参数接受工具对象的列表,例如:
tools
tools = [BoxZoomTool(), ResetTool()]
还可以使用逗号分隔的字符串(包含工具快捷方式名称)方便地提供工具:
tools = "pan,wheel_zoom,box_zoom,reset"
但是,此方法不允许设置工具的属性。
最后,通过将工具对象传递给 add_tools 情节的方法。这也可以与 tools 上述关键字:
from bokeh.models import BoxSelectTool plot = figure(tools="pan,wheel_zoom,box_zoom,reset") plot.add_tools(BoxSelectTool(dimensions="width"))
Bokeh工具栏可以(最多)从每种手势(拖动、滚动、点击)中有一个活动工具。默认情况下,Bokeh将使用默认的预定义优先顺序从配置的工具集中选择每种工具中的一种激活。
但是,可以控制哪个刀具处于激活状态。最低的 bokeh.models 级别,这是通过使用 active_drag , active_inspect , active_scroll 和 active_tap 性质 Toolbar . 这些属性可以采用以下值:
active_drag
active_inspect
active_scroll
active_tap
Toolbar
None ---没有这种有效的工具
"auto" ---Bokeh选择这类工具激活(可能没有)
"auto"
一 Tool 实例---Bokeh将给定的刀具设置为激活刀具
另外, active_inspect 工具可以接受:*一系列 Tool 要设置为活动工具的实例
例如:
# configure so that no drag tools are active plot.toolbar.active_drag = None # configure so that Bokeh chooses what (if any) scroll tool is active plot.toolbar.active_scroll = "auto" # configure so that a specific PolySelect tap tool is active plot.toolbar.active_tap = poly_select # configure so that a sequence of specific inspect tools are active # note: this only works for inspect tools plot.toolbar.active_inspect = [hover_tool, crosshair_tool]
所有这些属性的默认值为 "auto" .
通过将这些属性作为关键字参数传递给 figure() 功能。也可以传递任意一个字符串名称,以便于配置:
# configures the lasso tool to be active plot = figure(tools="pan,lasso_select,box_select", active_drag="lasso_select")
这些工具可以通过平移(在触摸设备上)或左拖动(在鼠标设备上)来使用。一次只能激活一个平移/拖动工具。在适用的情况下,平移/拖动工具将考虑范围上设置的任何最大和最小值。
姓名: 'box_select'
'box_select'
偶像:
框选择工具允许用户通过左键拖动鼠标或在绘图区域中拖动手指来定义矩形选择区域。通过设置 dimensions 属性到 width 或 height 而不是默认值 both .
dimensions
width
height
both
选择后,所选点的索引可从上的属性中获取 Selection 对象作为字形数据源。例如:
Selection
source.selected.indices
将在“散布”类型图示符的常见情况下保存选定的索引。
注解
要进行多重选择,请按SHIFT键。要清除选择,请按ESC键。
姓名: 'box_zoom'
'box_zoom'
“框缩放”工具允许用户定义矩形区域,以将打印边界缩放到。这是通过向左拖动鼠标或拖动手指穿过绘图区域来完成的。
姓名: 'lasso_select'
'lasso_select'
套索选择工具允许用户通过左键拖动鼠标或在绘图区域拖动手指来定义选择的任意区域。
姓名: 'pan' , 'xpan' , 'ypan' ,
'pan'
'xpan'
'ypan'
“平移”工具允许用户通过在绘图区域左拖动鼠标或拖动手指来平移绘图。
还可以通过设置 dimensions 属性添加到包含 width 或 height . 此外,还有工具别名 'xpan' 和 'ypan' ,分别。
这些工具可以通过轻击(在触摸设备上)或左键单击(在鼠标设备上)来使用。一次只能激活一个单击/点击工具。
姓名: 'poly_select'
'poly_select'
多边形选择工具允许用户通过左键单击鼠标或在不同位置轻触手指来定义任意多边形区域供选择。
通过左键双击或点击完成选择。要进行多重选择,请按SHIFT键。要清除选择,请按ESC键。
姓名: 'tap'
'tap'
点击选择工具允许用户通过单击鼠标左键或用手指轻触在单个点进行选择。
这些工具是通过捏(在触摸设备上)或滚动(在鼠标设备上)来使用的。一次只能激活一个滚动/挤压工具。
姓名: 'wheel_zoom' , 'xwheel_zoom' , 'ywheel_zoom'
'wheel_zoom'
'xwheel_zoom'
'ywheel_zoom'
滚轮缩放工具将以当前鼠标位置为中心放大和缩小绘图。它将尊重任何最小值和最大值以及范围,防止放大和缩小超出这些值。
也可以通过设置 dimensions 属性添加到包含 width 或 height . 此外,还有工具别名 'xwheel_zoom' 和 'ywheel_zoom' ,分别。
姓名: 'xwheel_pan' , 'ywheel_pan'
'xwheel_pan'
'ywheel_pan'
滚轮平移工具将沿指定的尺寸平移打印窗口,而不更改窗口的纵横比。该工具将考虑任何最小值和最大值以及范围,防止平移超出这些值。
操作是只有在点击或单击工具栏中的按钮时才会激活的操作。他们通常是情态的或直接的行动。
姓名: 'undo'
'undo'
撤消工具允许恢复绘图的先前状态。
姓名: 'redo'
'redo'
“重做”工具将反转“撤消”工具执行的上一个操作。
姓名: 'reset'
'reset'
重置工具会将绘图范围恢复为其原始值。
姓名: 'save'
'save'
保存工具弹出一个模式对话框,允许用户保存绘图的PNG图像。
姓名: 'zoom_in' , 'xzoom_in' , 'yzoom_in'
'zoom_in'
'xzoom_in'
'yzoom_in'
放大工具将增加绘图的缩放。它将尊重任何最小值和最大值和范围,防止放大和缩小超出这些值和范围。
也可以通过设置 dimensions 属性添加到包含 width 或 height . 此外,还有工具别名 'xzoom_in' 和 'yzoom_in' ,分别。
姓名: 'zoom_out' , 'xzoom_out' , 'yzoom_out'
'zoom_out'
'xzoom_out'
'yzoom_out'
缩小工具将降低绘图的缩放级别。它将尊重任何最小值和最大值以及范围,防止放大和缩小超出这些值。
检查器是被动工具,根据当前光标位置注释或报告有关绘图的信息。在任何给定的时间,任何数量的检查员都可能是活跃的。工具栏中的inspectors菜单允许用户切换任何检查器的活动状态。
姓名: 'crosshair'
'crosshair'
菜单图标:
十字线工具在绘图上以当前鼠标位置为中心绘制十字线注释。可以通过设置 dimensions 属性设置为枚举值之一 width , height 或 both .
姓名: 'hover'
'hover'
悬停工具是一个被动的检查器工具。它通常始终处于启用状态,但可以在与工具栏关联的检查器菜单中进行配置。
默认情况下,悬停工具将生成一个“表格”工具提示,其中每行包含一个标签及其关联值。标签和值以列表形式提供 (标签,值) 元组。例如,下面左侧的工具提示是使用 tooltips 右边的定义。
tooltips
hover.tooltips = [ ("index", "$index"), ("(x,y)", "($x, $y)"), ("radius", "@radius"), ("fill color", "$color[hex, swatch]:fill_color"), ("foo", "@foo"), ("bar", "@bar"), ]
以开头的字段名 $ 是“特殊领域”。这些值通常对应于绘图固有的值,例如鼠标在数据或屏幕空间中的坐标。以下列出了这些特殊字段:
$
$index
数据源中选定点的索引
$name
价值观 name 悬停字形渲染器的属性
name
$x
数据空间中光标下的x坐标
$y
数据空间中光标下的y坐标
$sx
屏幕(画布)空间中光标下的x坐标
$sy
屏幕(画布)空间中光标下的y坐标
$color
来自数据源的颜色,语法为: $color[options]:field_name . 可用选项包括: hex (以十六进制值显示颜色),以及 swatch 同时显示小色板。
$color[options]:field_name
hex
swatch
以开头的字段名 @ 与中的列关联 ColumnDataSource . 例如,字段名 "@price" 将显示 "price" 无论何时触发悬停。如果悬停是针对第17个字形,则悬停工具提示将相应地显示第17个价格值。
@
ColumnDataSource
"@price"
"price"
注意,如果一个列名包含空格,它必须用大括号括起来。 @{{adjusted close}} 将显示名为的列中的值 "adjusted close" .
@{{adjusted close}}
"adjusted close"
有时(尤其是对于堆积图),允许间接指定列的名称是可取的。字段名称 @$name 区别在于它会查找 name 字段,并将该值用作列名。例如,如果用户使用名称悬停 "US East" 然后 @$name 等于 @{{US East}} .
@$name
"US East"
@{{US East}}
下面是一个完整的示例,演示如何通过设置 tooltips 参数 figure :
figure
from bokeh.plotting import ColumnDataSource, figure, output_file, show output_file("toolbar.html") source = ColumnDataSource(data=dict( x=[1, 2, 3, 4, 5], y=[2, 5, 8, 2, 7], desc=['A', 'b', 'C', 'd', 'E'], )) TOOLTIPS = [ ("index", "$index"), ("(x,y)", "($x, $y)"), ("desc", "@desc"), ] p = figure(plot_width=400, plot_height=400, tooltips=TOOLTIPS, title="Mouse over the dots") p.circle('x', 'y', size=20, source=source) show(p)
悬停工具显示与单个图示符关联的信息性工具提示。这些工具提示可以配置为使用 mode 财产:
mode
"mouse"
只有当鼠标直接位于字形上时
"vline"
当鼠标位置的垂直线与字形相交时
"hline"
当鼠标位置的水平线与字形相交时
默认配置为 mode = "mouse" . 这可以在 基本工具提示 上面的例子。下面的示例 设置工具提示字段格式 演示一个设置 mode = "vline" .
mode = "mouse"
mode = "vline"
默认情况下,字段的值(例如。 @foo )以基本数字格式显示。但是,可以更精确地控制值的格式。可以通过将指定的格式附加到大括号的末尾来修改字段。下面是一些例子。
@foo
"@foo{0,0.000}" # formats 10000.1234 as: 10,000.123 "@foo{(.00)}" # formats -10000.1234 as: (10000.123) "@foo{($ 0.00 a)}" # formats 1230974 as: $ 1.23 m
上面的示例都使用默认格式设置。但是还可以指定其他格式方案来解释格式字符串:
"numeral"
为数字、货币、字节、时间和百分比提供多种格式。完整的格式集可以在 NumeralTickFormatter 参考文件。
NumeralTickFormatter
"datetime"
提供日期和时间值的格式。完整的格式集列在 DatetimeTickFormatter 参考文件。
DatetimeTickFormatter
"printf"
提供类似于C样式“printf”类型说明符的格式。见 PrintfTickFormatter 有关完整细节的参考文档。
PrintfTickFormatter
通过配置 formatters 悬停工具的属性。此属性将工具提示变量映射到格式方案。例如,使用 "datetime" 列格式设置方案 "@{{close date}}" ,设置值:
formatters
"@{{close date}}"
hover_tool.formatters = { "@{close date}": "datetime"}
也可以为“特殊变量”提供格式化程序,例如 "$x" :
"$x"
hover_tool.formatters = { "$x": "datetime"}
如果没有为列名指定格式化程序,则默认 "numeral" 假定为格式化程序。
请注意,格式规范也与具有空格的列名兼容。例如, @{{adjusted close}}{{($ 0.00 a)}} 将格式应用于名为“adjusted close”的列。
@{{adjusted close}}{{($ 0.00 a)}}
下面的示例代码显示显式地配置 HoverTool 对于不同字段使用不同的格式化程序:
HoverTool( tooltips=[ ( 'date', '@date{%F}' ), ( 'close', '$@{adj close}{%0.2f}' ), # use @{ } for field names with spaces ( 'volume', '@volume{0.00 a}' ), ], formatters={ '@date' : 'datetime', # use 'datetime' formatter for '@date' field '@{adj close}' : 'printf', # use 'printf' formatter for '@{adj close}' field # use default 'numeral' formatter for other fields }, # display a tooltip whenever the cursor is vertically in line with a glyph mode='vline' )
将鼠标悬停在下面的绘图上,可以看到此配置生成的输出:
使用 CustomJSHover 模型中,还可以使用JavaScript指定一个自定义格式设置器,该格式设置器可以在工具提示中显示派生量。
CustomJSHover
悬停工具可用于检查图像字形,其中可能包含对应的数据层 ColumnDataSource :
import numpy as np from bokeh.plotting import figure, output_file, show output_file("tools_hover_tooltip_image.html") ramp = np.array([np.linspace(0, 10, 200)]*20) steps = np.array([np.linspace(0, 10, 10)]*20) bitmask = np.random.rand(25, 10) > 0.5 data = dict(image=[ramp, steps, bitmask], squared=[ramp**2, steps**2, bitmask**2], pattern=['smooth ramp', 'steps', 'bitmask'], x=[0, 0, 25], y=[5, 20, 5], dw=[20, 20, 10], dh=[10, 10, 25]) TOOLTIPS = [ ('name', "$name"), ('index', "$index"), ('pattern', '@pattern'), ("x", "$x"), ("y", "$y"), ("value", "@image"), ('squared', '@squared') ] p = figure(x_range=(0, 35), y_range=(0, 35), tools='hover,wheel_zoom', tooltips=TOOLTIPS) p.image(source=data, image='image', x='x', y='y', dw='dw', dh='dh', palette="Inferno256", name="Image Glyph") show(p)
在本例中,定义了三种图像模式,分别命名为 ramp , steps 和 bitmask . 悬停工具提示显示图像的索引、图案的名称和 x 和 y 光标的位置,以及相应的值和平方值。
ramp
steps
bitmask
x
y
也可以为工具提示提供自定义HTML模板。为此,传递一个HTML字符串,并在需要替换的地方使用Bokeh工具提示字段名符号。以上关于格式等的所有信息仍然适用。请注意,您还可以使用 {{safe}} 在列名后设置格式以禁用数据源中HTML的转义。示例如下:
{{safe}}
from bokeh.plotting import ColumnDataSource, figure, output_file, show output_file("toolbar.html") source = ColumnDataSource(data=dict( x=[1, 2, 3, 4, 5], y=[2, 5, 8, 2, 7], desc=['A', 'b', 'C', 'd', 'E'], imgs=[ 'https://docs.bokeh.org/static/snake.jpg', 'https://docs.bokeh.org/static/snake2.png', 'https://docs.bokeh.org/static/snake3D.png', 'https://docs.bokeh.org/static/snake4_TheRevenge.png', 'https://docs.bokeh.org/static/snakebite.jpg' ], fonts=[ '<i>italics</i>', '<pre>pre</pre>', '<b>bold</b>', '<small>small</small>', '<del>del</del>' ] )) TOOLTIPS = """ <div> <div> <img src="@imgs" height="42" alt="@imgs" width="42" style="float: left; margin: 0px 15px 15px 0px;" border="2" ></img> </div> <div> <span style="font-size: 17px; font-weight: bold;">@desc</span> <span style="font-size: 15px; color: #966;">[$index]</span> </div> <div> <span>@fonts{safe}</span> </div> <div> <span style="font-size: 15px;">Location</span> <span style="font-size: 10px; color: #696;">($x, $y)</span> </div> </div> """ p = figure(plot_width=400, plot_height=400, tooltips=TOOLTIPS, title="Mouse over the dots") p.circle('x', 'y', size=20, source=source) show(p)
编辑工具通过添加、修改和删除,在客户端提供绘制和编辑glyphs的功能 ColumnDataSource 数据。
所有编辑工具共享少量密钥绑定:
添加到选择或开始绘图的修改键
删除选定的图示符
清除所选内容
在MacBooks和其他一些键盘上,BACKSPACE键的标签是“删除”。
姓名: 'box_edit'
'box_edit'
BoxEditTool允许绘制、拖动和删除 Rect 在一个或多个渲染器上通过编辑底层 ColumnDataSource 数据。与其他图形工具一样,要编辑的渲染器必须作为列表显式提供:
Rect
r1 = p.rect('x', 'y', 'width', 'height', source=source) r2 = p.rect('x', 'y', 'width', 'height', source=source2) tool = BoxEditTool(renderers=[r1, r2])
该工具将自动修改数据源上与 x , y , width 和 height 字形的值。数据源中的任何其他列都将使用声明的 empty_value ,添加新框时。绘制新框时,数据将始终添加到 ColumnDataSource 在第一个提供的渲染器上。
empty_value
限制可绘制的元素数量通常也很有用,例如,在指定特定数量的感兴趣区域时。使用 num_objects 属性,我们可以确保一旦达到限制,将从队列中弹出最旧的框,为正在添加的新框腾出空间。
num_objects
上面的动画显示了支持的工具操作,通过显示按下的键来突出显示鼠标操作(在光标周围加一个圆圈)和按键笔划。这个 BoxEditTool 可以 Add , Move 和 删除 绘图框:
BoxEditTool
按住shift键,然后单击并拖动绘图上的任何位置,或者双击一次以开始绘制,移动鼠标并再次双击以完成绘制。
单击并拖动现有框。一旦你松开鼠标按钮,盒子就会掉下来。
单击一个框以选中它,然后在鼠标处于绘图区域内时按BACKSPACE键。
到 Move 或 删除 一次多个箱子:
使用SHIFT+tap(或其他选择工具)选择框,然后拖动绘图上的任何位置。选择并拖动特定的框将同时移动这两个框。
使用SHIFT+tap(或其他选择工具)选择框,然后在鼠标位于绘图区域内时按BACKSPACE键。
姓名: 'freehand_draw'
'freehand_draw'
这个 FreehandDrawTool 允许使用 Patches 和 MultiLine glyphs,通过编辑底层 ColumnDataSource 数据。与其他图形工具一样,要编辑的渲染器必须作为列表显式提供:
FreehandDrawTool
Patches
MultiLine
r = p.multi_line('xs', 'ys' source=source) tool = FreehandDrawTool(renderers=[r])
该工具将自动修改数据源上与 xs 和 ys 字形的值。数据源中的任何其他列都将使用声明的 empty_value ,添加新点时。任何新添加的补丁或多线将插入 ColumnDataSource 提供的第一个渲染器。
xs
ys
限制可绘制的元素数量通常也很有用,例如,在指定特定数量的感兴趣区域时。使用 num_objects 属性,我们可以确保一旦达到限制,将从队列中弹出最旧的修补程序/多行,以便为正在添加的新修补程序/多行腾出空间。
上面的动画显示了支持的工具操作,通过显示按下的键来突出显示鼠标操作(在光标周围加一个圆圈)和按键笔划。这个 PolyDrawTool 可以 Draw 和 删除 补丁和多行:
PolyDrawTool
单击并拖动以开始绘制,释放鼠标按钮以完成绘制
单击一条线或面片将其选中,然后在鼠标位于绘图区域内时按BACKSPACE键。
到 删除 一次多个面片/线条:
使用SHIFT+tap(或其他选择工具)选择面片/线,然后在鼠标位于绘图区域内时按BACKSPACE键。
姓名: 'point_draw'
'point_draw'
这个 PointDrawTool 允许添加、拖动和删除点状图示符(属于 XYGlyph 在一个或多个渲染器上通过编辑底层 ColumnDataSource 数据。与其他图形工具一样,要编辑的渲染器必须作为列表显式提供:
PointDrawTool
XYGlyph
c1 = p.circle('x', 'y', 'width', 'height', source=source) r1 = p.rect('x', 'y', 0.1, 0.1, source=source2) tool = PointDrawTool(renderers=[c1, r1])
该工具将自动修改数据源上与 x 和 y 字形的值。数据源中的任何其他列都将使用声明的 empty_value ,添加新点时。任何新添加的点都将插入 ColumnDataSource 提供的第一个渲染器。
限制可以绘制的元素的数量通常也很有用。使用 num_objects 属性,我们可以确保一旦达到限制,将从队列中弹出最旧的点,以便为添加的新点腾出空间。
上面的动画显示了支持的工具操作,通过显示按下的键来突出显示鼠标操作(在光标周围加一个圆圈)和按键笔划。PointDrawTool可以 Add , Move 和 删除 绘图上的点状图示符:
点击地图上的任何地方。
点击并拖动现有点。一旦松开鼠标按钮,该点将被删除。
点击一个点以选择它,然后在鼠标处于绘图区域内时按BACKSPACE键。
到 Move 或 删除 一次多点:
使用SHIFT+tap(或其他选择工具)选择点,然后拖动绘图上的任何位置。选择并拖动特定点将同时移动这两个点。
使用SHIFT+tap(或其他选择工具)选择点,然后在鼠标位于绘图区域内时按BACKSPACE键。
姓名: 'poly_draw'
'poly_draw'
这个 PolyDrawTool 允许绘制、选择和删除 Patches 和 MultiLine 在一个或多个渲染器上通过编辑底层 ColumnDataSource 数据。与其他绘图工具一样,要编辑的渲染器必须以列表形式明确提供。
如果A vertex_renderer 如果提供了类似点的glyph,PolyDrawTool将使用它在所有提供的渲染器上显示多线/面片的顶点。这还允许在绘制时捕捉到现有顶点。
vertex_renderer
上面的动画显示了支持的工具操作,通过显示按下的键来突出显示鼠标操作(在光标周围加一个圆圈)和按键笔划。这个 PolyDrawTool 可以 Add , Move 和 删除 补丁和多行:
双击以添加第一个顶点,然后使用tap添加每个后续顶点。要完成绘图操作,请双击以插入最终顶点或按ESC键。
点击并拖动现有面片/多线。一旦松开鼠标按钮,该点将被删除。
点击一个面片/多行以将其选中,然后在鼠标位于绘图区域内时按BACKSPACE键。
姓名: 'poly_edit'
'poly_edit'
poliedittool允许编辑一个或多个顶点 Patches 或 MultiLine 字形。要编辑的字形可以通过 renderers 财产。顶点的渲染器可以通过 vertex_renderer ,它必须呈现一个类似Glyph的点 XYGlyph 类型)。
renderers
该工具将自动修改数据源上与 xs 和 ys 字形的值。数据源中的任何其他列都将使用声明的 empty_value ,添加新点时。
上面的动画显示了支持的工具操作,通过显示按下的键来突出显示鼠标操作(在光标周围加一个圆圈)和按键笔划。这个 PolyEditTool 可以 Add , Move 和 删除 现有面片和多线上的顶点:
PolyEditTool
双击现有修补程序或多行
双击现有顶点以将其选中。工具将绘制下一个点。要添加它,请点击新位置。要完成编辑并添加点,请双击。否则按ESC键取消。
拖动现有顶点并释放鼠标按钮以释放它。
选择一个或多个顶点后,在鼠标光标位于绘图区域内时按BACKSPACE键。
尽管HTML画布可以轻松地显示数万甚至数十万个字形,但这样做可能会对交互性能产生不利影响。为了适应大的ish(但不是巨大的)数据大小,Bokeh plots在客户端提供了“细节级别”(levelofdetail,LOD)功能。
处理非常大的数据量时的另一个选择是在数据发送到浏览器之前使用Bokeh服务器对数据执行降采样。这种方法在超过一定的数据量后是不可避免的。看到了吗 运行Bokeh服务器 更多信息。
其基本思想是在交互操作(例如,平移或缩放)期间,绘图只绘制一小部分数据点。这有希望在飞行过程中保持互动的一般感觉,同时保持互动性能。有四个属性 Plot 控制LOD行为的对象:
lod_factor
属性类型: Int
Int
应用详细程度抽取时要使用的抽取因子。
lod_interval
交互工具事件启用详细程度下采样的间隔(毫秒)。
lod_threshold
多个数据点,在这些数据点之上,glyph渲染器可以执行详细程度的下采样。设置为 None 禁用任何详细程度的下采样。
lod_timeout
检查交互工具事件是否仍在发生的超时(毫秒)。启用详细级别模式后,将每隔 lod_timeout 如果没有发生交互工具事件,则禁用详细级别模式。