Полностью выпадающее меню с несколькими месяцами - PullRequest
0 голосов
/ 11 октября 2019

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

У меня вопрос: можно ли заменить это на цикл for? Традиционный код:

trace1 = Scatter(
    x=month1.Date, y=month1,
    line=Line(
        color='#FFD700',
        width=3
    ),
    name='Start_Date to End_Date'
)

trace2 = Scatter(
    x=month2.Date, y=month2,
    line=Line(
        color='#C0C0C0',
        width=3
    ),
    name='Start_Date to End_Date'
)

trace3 = Scatter(
    x=month3.Date, y=month3,
    line=Line(
        color='#BA8651',
        width=3
    ),
    name='Start_Date to End_Date'
)

trace4 = Scatter(
    x=month4.Date, y=month4,
    line=Line(
        color='#000000',
        width=3
    ),
    name='Start_Date to End_Date'
)

data = Data([trace1, trace2, trace3, trace4])
layout = Layout(
    title='Power Data Interval',
    updatemenus=list([
        dict(
            x=-0.05,
            y=1,
            yanchor='top',
            buttons=list([
                dict(
                    args=['visible', [True, True, True, True]],
                    label='All',
                    method='restyle'
                ),
                dict(
                    args=['visible', [True, False, False, False]],
                    label='Gold',
                    method='restyle'
                ),
                dict(
                    args=['visible', [False, True, False, False]],
                    label='Silver',
                    method='restyle'
                ),
                dict(
                    args=['visible', [False, False, True, False]],
                    label='Bronze',
                    method='restyle'
                ),
                dict(
                    args=['visible', [False, False, False, True]],
                    label='Total',
                    method='restyle'
                )
            ]),
        )
    ]),
)
fig = Figure(data=data, layout=layout)
py.iplot(fig)

С этим для кода цикла:

month = {}  # array of dataframes by months
monthLength = len(month)
trace = {}
for i in range(0, monthLength, 1):
    trace[i] = Scatter(
        x=month[i].Date, y=month[i]['value'],
        line=Line(
            color='#FFD700',
            width=3
        ),
        name='Start_Date to End_Date') # The name of lot is begin and end date of that month Note: the name part is psuedu code but irrelevant


data = Data(trace)
layout = Layout(
    title='Power Data Interval',
    updatemenus=list([  # Not sure how to do update menus with a for loop I only need the race appear when it is clicked on.
        dict(
            x=-0.05,
            y=1,
            yanchor='top',
            buttons=list([
                dict(
                    args=['visible', [True, True, True, True]],
                    label='All',
                    method='restyle'
                ),
                dict(
                    args=['visible', [True, False, False, False]],
                    label='month1',
                    method='restyle'
                ),
                dict(
                    args=['visible', [False, True, False, False]],
                    label='month2',
                    method='restyle'
                ),
                dict(
                    args=['visible', [False, False, True, False]],
                    label='month3',
                    method='restyle'
                ),
                dict(
                    args=['month4', [False, False, False, True]],
                    label='Total',
                    method='restyle'
                )
            ]),
        )
    ]),
)
fig = Figure(data=data, layout=layout)
py.iplot(fig)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...