Как отфильтровать данные диаграммы рассеяния по 3-м (или более) столбцам в Pandas DataFrame с Plotly offline? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь построить график рассеяния в автономном режиме с графиком, который будет отображаться в моем браузере.Я хотел бы иметь раскрывающееся меню, которое позволит мне фильтровать мои данные по третьему столбцу из моего фрейма данных, который связан с моими двумя столбцами, выбранными для моих значений x и y на диаграмме рассеяния.

У меня 2 проблемы.

Во-первых, у меня возникли проблемы с поиском способа построения списка значений в раскрывающемся списке по уникальным значениям в 3-м столбце, по которому я хотел бы отфильтровать свои данные.Например, я пытаюсь построить имена в раскрывающемся списке из списка, назначенного переменной, например:

labelnames = list(df.name.unique())

Во-вторых, у меня возникают проблемы с выяснением, как обновить разброс в зависимости от того, какое значениебудет выбран из выпадающего меню.

Любая помощь будет принята с благодарностью!

Вот пример кода, с которым я работаю до сих пор:

import plotly.plotly as py
from plotly.graph_objs import *
import plotly.offline
import pandas as pd


my_dict = {
    'name': ["a", "a", "c", "c", "c", "f", "g"],
    'age': [20, 27, 35, 55, 18, 21, 35],
    'score': [33, 11, 9, 12, 44, 15, 25]
}

df = pd.DataFrame(my_dict)


trace1 = Scatter(
    y=df['age'],
    x=df['score'],
    name='Data Set 1',
    mode='markers',
)

labelnames = list(df.name.unique())

data = Data([trace1])
layout = Layout(
    updatemenus=list([
        dict(
            x=-0.05,
            y=1,
            buttons=list([
                dict(
                    args=[],
                    options=[{'label': i, 'value': i} for i in labelnames],
                    value='',
                    label='Scores',
                    method='restyle'
                )
            ]),
            yanchor='top'
        )
    ]),
)
fig = Figure(data=data, layout=layout)
plotly.offline.plot(fig, filename='name.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...