В этом примере они отображают все в одном go.Scatter
трассере, а затем могут использовать selection_fn
для получения информации о выбранных точках.
Я хочусделать то же самое с моим набором данных состоит из 3 кластеров.Чтобы было легче увидеть кластеры, я использую один индикатор для одного класса.Поэтому я пытаюсь изменить пример кода, чтобы адаптировать его к моему набору данных, как показано ниже.
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.tools import set_credentials_file
import plotly.offline as py
import pandas as pd
import numpy as np
from ipywidgets import interactive, HBox, VBox
from sklearn.datasets import make_blobs
X, y = make_blobs(30,random_state=101)
py.init_notebook_mode()
f = go.FigureWidget([go.Scatter(y = X[y==0][:,1], x = X[y==0][:,0], mode = 'markers'),
go.Scatter(y = X[y==1][:,1], x = X[y==1][:,0], mode = 'markers'),
go.Scatter(y = X[y==2][:,1], x = X[y==2][:,0], mode = 'markers')])
scatter = f.data[0]
N = len(X)
# Create a table FigureWidget that updates on selection from points in the scatter plot of f
t = go.FigureWidget([go.Table(
header=dict(values=['x','y','class'],
fill = dict(color='#C2D4FF'),
align = ['left'] * 5),
cells=dict(values=[X[:,0], X[:,1], y],
fill = dict(color='#F5F8FF'),
align = ['left'] * 5))])
def selection_fn(trace,points,selector):
print(points.point_inds)
t.data[0].cells.values = [X[points.point_inds,0], X[points.point_inds,1], y[points.point_inds]]
scatter.on_selection(selection_fn)
# Put everything together
VBox((HBox(),f,t))
Неверное поведение 1: возвращена неверная информация
При выборе двух точек данных из trace 0
,он возвращает мне 2 информации, но это неправильно.
Неверное поведение 2: Информация не возвращается
При выборе точек данных из трассировщика 1 и 2 он даже не возвращает информацию
После краткогоОтладка, я замечаю, что есть несоответствие в индексе для каждого трассировщика и полного набора данных.Этот код может возвращать индекс только из трассировщика 0, однако, когда он передает индекс в полный набор данных, он дает неверную информацию о точках.При выборе точек из трассировщика 1 и 2 он не может даже вернуть индекс, поэтому никакая информация не может быть извлечена.
Хотя я понимаю проблему, я не знаю, как изменить код, поскольку явсе еще новичок в заговоре.