在 canvas 中拖动鼠标时,BokehJS FreehandDrawTool 不绘制线条

BokehJS FreehandDrawTool does not plot line when dragging mouse in canvas

在 BokehJS 2.4.2 中,FreehandDrawTool documentation 显示在工具栏中,但在 canvas 中拖动鼠标时没有画线。

这是重现问题的最小示例。这个例子非常简单,很难找出可能有什么问题。

let plot = Bokeh.Plotting.figure({
    tools: ['freehand_draw'],
    x_range: [0, 100],
    y_range: [0, 100],
});

重现问题的最少代码输出

示例来自 FreehandDrawTool documentation

在canvas中拖动鼠标时什么会阻止绘制线?

目标是拥有一个可用的 FreehandDrawTool。

更新 1

根据来自@mosc9575 的 Python 示例修改后的示例如下,并且有效!默认情况下该工具应处于非活动状态,默认情况下该工具处于活动状态时它将不起作用。当 FreehandDrawTool 默认处于活动状态时,您需要停用并再次激活该工具才能正常工作。

let source = new Bokeh.ColumnDataSource({
    data : {
        xs: [[0,50,100]],
        ys: [[0,50,0]],
    },
});

let r = plot.multi_line({
    'xs': { field: 'xs' },
    'ys': { field: 'ys' },
    source: source,
});

let freehand_draw = new Bokeh.FreehandDrawTool({
    active: false,
    empty_value: 1,
    renderers: [r],
});

plot.add_tools(freehand_draw);

您需要创建一个渲染器来使您的示例工作。如果没有此渲染器,绘图工具将无法添加此值。

Python 例子

from bokeh.plotting import figure, show, output_notebook
from bokeh.models import FreehandDrawTool, ColumnDataSource
output_notebook()

plot = figure(
    x_range =  [0, 100],
    y_range =  [0, 100],
    width=400,
    height=400,
    tools = ""
)

source = ColumnDataSource(dict(xs=[[0,0]], ys=[[0,0]]))

r = plot.multi_line('xs', 'ys', source=source)
tool = FreehandDrawTool(renderers=[r], empty_value=1)
plot.add_tools(tool)
show(plot)

看起来您是在 JS 中执行此操作而不是在 python 中执行此操作,因此此副本不能用作复制粘贴,但它说明了这个概念。