簡體   English   中英

在 canvas 中拖動鼠標時,BokehJS FreehandDrawTool 沒有 plot 行

[英]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

輸出最少的代碼來重現問題

FreehandDrawTool 文檔中的示例

FreehandDrawTool 文檔中的示例

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM