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)
Я хочу автоматизировать выпадающий список. Я хотел бы знать, если это правильный подход, или кто-то знает другой метод. Спасибо за помощь