在 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 中执行此操作,因此此副本不能用作复制粘贴,但它说明了这个概念。
在 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 中执行此操作,因此此副本不能用作复制粘贴,但它说明了这个概念。