我在绘图上有两条线,可以拖放以更改其位置和长度。我想为它们两者计算欧几里德距离,并在图上显示出来(可以在标题,小部件或表格中)。更改位置后,距离也应更改。
到目前为止,我已经想到了这一点,但是我不知道如何从图中获取点的位置并计算距离。我以为可以从表中提取出来,或者在列中有一个公式,但是它停止刷新。
我已经阅读了有关JS回调的信息,但这让我感到困惑。
output_file("tools_point_draw.html")
_tools_to_show = 'box_zoom,pan,save,hover,reset,tap'
p = figure(x_range=(0, 10), y_range=(0, 10), tools=_tools_to_show,
plot_width=862, plot_height=604,
title='Lesion adjuster')
p.xgrid.visible = False
p.ygrid.visible = False
p.xaxis.visible = False
p.yaxis.visible = False
p.background_fill_color = 'white'
d_true = {'x': [2, 3], 'y': [4, 1],
'color': ['red', 'red'],
'desc': ['true','true']}
d_pred = {'x': [1, 5], 'y': [6, 5],
'color': ['blue', 'blue'],
'desc': ['pred','pred']}
df_true = pd.DataFrame(d_true)
df_pred = pd.DataFrame(d_pred)
df_all = pd.concat([df_true, df_pred])
source_true = ColumnDataSource(df_true)
source_pred = ColumnDataSource(df_pred)
source_all = ColumnDataSource(df_all)
renderer_true_s = p.scatter(x='x', y='y', source=source_true, color='color', size=15,
line_color='red', line_width=5)
renderer_true_l = p.line(x='x', y='y', source=source_true, color='red',
line_dash='dashed', line_width=10)
renderer_pred_s = p.scatter(x='x', y='y', source=source_pred, color='color',
size=15, line_color='blue', line_width=5)
renderer_pred_l = p.line(x='x', y='y', source=source_pred, color='blue',
line_dash='dashed', line_width=10)
columns = [TableColumn(field="x", title="I am X"),
TableColumn(field="y", title="I am Y"),
TableColumn(field='color', title='color'),
TableColumn(field='desc', title='desc')]
table = DataTable(source=source_all, columns=columns, editable=True, height=400)
draw_tool = PointDrawTool(renderers=[renderer_true_s, renderer_true_l,
renderer_pred_s, renderer_pred_l],
empty_value='black')
p.add_tools(draw_tool)
p.toolbar.active_tap = draw_tool
show(Column(p, table))
编辑
在另一个问题中关闭并重新定义: Update DataTable on Tap event in Bokeh