簡體   English   中英

循環 Function 與交互 Plotly

[英]Loop Function with Interaction Plotly

Python/Plotly 中的新功能,我正在嘗試使用 plotly “優化”交互式 plot

下面是df

Date    AA  AQ  AS  B6  CO  DH  DL  EV  F9  FL  HA  HP  MQ  NW  OH  OO  TZ  UA  US  WN  XE  YV  DayofMonth  Month
27/12   5.0 0.0 2.0 6.0 3.0 NaN 2.0 6.0 2.0 2.0 0.0 1.0 4.0 5.0 1.0 9.0 0.0 5.0 5.0 17.0    1.0 2.0 27  12
28/12   8.0 0.0 3.0 2.0 0.0 1.0 6.0 4.0 1.0 3.0 1.0 0.0 5.0 3.0 1.0 3.0 0.0 6.0 4.0 19.0    6.0 0.0 28  12
29/12   2.0 NaN 1.0 NaN 1.0 0.0 11.0    4.0 4.0 1.0 0.0 1.0 4.0 6.0 2.0 4.0 0.0 6.0 3.0 13.0    6.0 2.0 29  12




import plotly.graph_objects as go


# Initialize figure
fig = go.Figure()
df= pivot_gp.copy()

# Add Traces
for col in ['AA',   'AQ',   'AS',   'B6',   'CO',   'DH',   'DL',   'EV',   'F9',   'FL',   'HA',   'HP',   'MQ',   'NW',   'OH',   'OO',   'TZ',   'UA',   'US',   'WN',   'XE',   'YV']:
  fig.add_trace(go.Scatter(x= list(df.Date), y= list(df[col]), name= f"{col}", line= dict(color="red")))


fig.update_layout(updatemenus=[dict(active= 0, 
                                    buttons=list([dict(label= "None",
                                                       method= "update",
                                                       args= [{"visible": [False, False, False, False, False, False, False, False, False, False, False,
                                                                           False,False, False, False, False, False, False, False, False, False, False]}, {"title": "Unique Carriers"}]),

                                                  dict(label= "AA",
                                                       method= "update", 
                                                       args= [{"visible": [True, False, False, False, False, False, False, False, False, False, False,
                                                                           False,False, False, False, False, False, False, False, False, False, False]}, {"title": "Unique Carrier: AA"}]),

                                                  dict(label= "AQ", 
                                                       method= "update", 
                                                       args= [{"visible": [False, True, False, False, False, False, False, False, False, False, False,
                                                                           False,False, False, False, False, False, False, False, False, False, False]}, {"title": "Unique Carrier: AQ"}]), 

                                                  dict(label= "All", 
                                                       method= "update", 
                                                       args= [{"visible": [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]}, 
                                                             {"title": "Unique Carriers"}]),

                                                  ]), ) ])

如您所見,我已經能夠創建一個循環來迭代列並在交互式 plot 中添加一行。 但是,我遇到了更新 function 的問題。

問題:

如何創建一個循環來遍歷所有列並在正確列時添加 True,例如:

for col in [cols]:
     fig.update_layout(updatemenus=[dict(active= 0, 
                                            buttons=list([dict(label= f"{col}",
                                                               method= "update", 
                                                               args= [{"visible": [True, False, False, False, False, False, False, False, False, False, False,
                                                                                   False,False, False, False, False, False, False, False, False, False, False]}, {"title": "Unique Carrier: f'{col}'"}]),

挑戰在 args 列表中,同時循環:

  • col 1 必須為 True 然后全部為 False
  • col 2 假,真,然后全部假
  • col 3 假,假,真,然后全部假
  • 等等...

獎勵問題:只是為了讓它“漂亮”,在第一個循環中如何更改每列的顏色:

line= dict(color="red")

感謝任何人的幫助!

也許它可以幫助你:

  1. 代替

    for col in ['AA', 'AQ', 'AS', 'B6', 'CO', 'DH', 'DL', 'EV', 'F9', 'FL', 'HA', 'HP', 'MQ', 'NW', 'OH', 'OO', 'TZ', 'UA', 'US', 'WN', 'XE', 'YV']:

    for col in df.columns:
  2. 要更改可見列表,您可以嘗試:

     "visible":[ x==col for x in df.columns]
  3. 對於顏色,您可以設置字典:

     color_dict = { 'AA':"red", 'AQ':"blue", 'AS:"green"} line = dict(color = color_dict.get(col))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM