如何通过Plotly脱机按Pandas DataFrame中的第3(或更多)列过滤散点图数据?

时间:2018-12-19 00:39:18

标签: python plotly

我正在尝试离线绘制散点图,并将其显示在浏览器中。我想要一个下拉菜单,该菜单将允许我从数据框的第三列过滤数据,该数据列与为散点图中的x和y值选择的两列相关联。

我有2个问题。

首先,我在想出一种方法来通过我希望从中过滤数据的第三列中的唯一值来构建下拉列表中的值列表。例如,我正在尝试从分配给这样的变量的列表的下拉列表中构建名称:

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')

0 个答案:

没有答案