Python Plotly Selection Events散点图:鼠标选择时不更新数据

Python Plotly Selection Events散点图:鼠标选择时不更新数据,python,plot,ipython,plotly,jupyter,Python,Plot,Ipython,Plotly,Jupyter,在散点图上,我希望能够选择一个区域,然后更新下表,显示该区域中的数据点。就像我做的那样 我已经修改了这个示例,但是在鼠标选择上没有发生任何变化。数据最初会显示(所有数据),但不会更新。当我在更新功能selection\u fn中使用pdb时,我发现当我用鼠标选择一个区域时,它永远不会转到它。 我也遵循了,但它没有改变任何事情。这两种方法都没有给出一个错误,而是用所有数据的初始表显示散点图 这是我的代码,改编自Plotly教程: import pandas as pd from plotly.gr

在散点图上,我希望能够选择一个区域,然后更新下表,显示该区域中的数据点。就像我做的那样

我已经修改了这个示例,但是在鼠标选择上没有发生任何变化。数据最初会显示(所有数据),但不会更新。当我在更新功能
selection\u fn
中使用pdb时,我发现当我用鼠标选择一个区域时,它永远不会转到它。 我也遵循了,但它没有改变任何事情。这两种方法都没有给出一个错误,而是用所有数据的初始表显示散点图

这是我的代码,改编自Plotly教程:

import pandas as pd
from plotly.graph_objs import *
import plotly.offline as po
import numpy as np
from ipywidgets import interactive, HBox, VBox
po.init_notebook_mode()
import time
import pdb

f = FigureWidget([Scatter(y = plot_data["t-SNE-X"], x = plot_data["t-SNE-Y"], mode = 'markers')])
scatter = f.data[0]

N = len(plot_data)
scatter.x = scatter.x + np.random.rand(N)/10 *(plot_data['t-SNE-X'].max() - plot_data['t-SNE-X'].min())
scatter.y = scatter.y + np.random.rand(N)/10 *(plot_data['t-SNE-Y'].max() - plot_data['t-SNE-Y'].min())
scatter.marker.opacity = 0.5

def update_axes(xaxis, yaxis):
    scatter = f.data[0]
    scatter.x = plot_data[xaxis]
    scatter.y = plot_data[yaxis]
    with f.batch_update():
        f.layout.xaxis.title = xaxis
        f.layout.yaxis.title = yaxis
        scatter.x = scatter.x + np.random.rand(N)/10 *(plot_data[xaxis].max() - plot_data[xaxis].min())
        scatter.y = scatter.y + np.random.rand(N)/10 *(plot_data[yaxis].max() - plot_data[yaxis].min())

axis_dropdowns = interactive(update_axes, yaxis = plot_data.select_dtypes('int64').columns, xaxis = plot_data.select_dtypes('int64').columns)

# Create a table FigureWidget that updates on selection from points in the scatter plot of f
t = FigureWidget([Table(
    header=dict(values=plot_data.columns,
                fill = dict(color='#C2D4FF'),
                align = ['left'] * 5),

    cells=dict(values=[plot_data[col] for col in plot_data.columns],

               fill = dict(color='#F5F8FF'),
               align = ['left'] * 5
               ))])

 def selection_fn(trace,points,selector):
     t.data[0].cells.values = [plot_data.loc[points.point_inds][col] for col in plot_data.columns]

scatter.on_selection(selection_fn)



#iplot({data : scatter.on_selection(selection_fn)})

# Put everything together
VBox((f, t))
这就是我看到的(因为隐私而模糊):

经过两天的调试,我发现这段代码现在可以在plotly 3.7.1上运行,而且
f.layout.dragmode='lasso'
这行代码不见了,没有任何文档记录。

只针对下一个遇到相同问题的人-请记住,在绘图图形上选择区域时的默认行为是放大该区域

因此,为了触发您自己的on_选择功能,只需从您的身材的内置控件中切换“框选择”或“套索选择”图标。您不需要像前面的答案所示对其进行硬编码