[英]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 列表中,同時循環:
獎勵問題:只是為了讓它“漂亮”,在第一個循環中如何更改每列的顏色:
line= dict(color="red")
感謝任何人的幫助!
也許它可以幫助你:
代替
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:
要更改可見列表,您可以嘗試:
"visible":[ x==col for x in df.columns]
對於顏色,您可以設置字典:
color_dict = { 'AA':"red", 'AQ':"blue", 'AS:"green"} line = dict(color = color_dict.get(col))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.