[英]BokehJS FreehandDrawTool does not plot line when dragging mouse in canvas
在BokehJS 2.4.2 中, FreehandDrawTool 文檔顯示在工具欄中,但在canvas 中拖動鼠標時沒有繪制任何線條。
這是重現該問題的最小示例。 這個例子太簡單了,很難弄清楚哪里可能出了問題。
let plot = Bokeh.Plotting.figure({
tools: ['freehand_draw'],
x_range: [0, 100],
y_range: [0, 100],
});
重現問題的最少代碼 Output
在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 中執行此操作,因此此副本不能用作復制粘貼,但它說明了這個概念。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.