python - 使用按钮属性使用 fig.update 更新跟踪的可见性?
问题描述
在使用 fig.update_layout Plotly 更新跟踪的可见性之后,我想使用 update_layout 预先设置跟踪的可见性,以匹配第一个按钮的状态。
由于我在上一个问题中给出的示例过于简单,@jayveesea 的正确 asnwer 不适用于我的情况:我无法从 trace.name 更新,而是需要从按钮名称更新。我创建了一个新示例:
我有一个带有“像素”、“VGs”、“x”、“y”的数据框。
- 更新按钮在“像素”之间变化
- legendroup 和 tracename 由“VG”给出
- 我正在绘制 y vs x,颜色由 VG 给出,按钮在像素之间变化。
我正在用可见 = False 绘制所有痕迹。然后我想更新绘图,以便所有像素 = 1 的痕迹都可见。(基本上就像按下按钮 1 一样)
这是一个新的完整工作示例:
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
df = pd.DataFrame ({"pixel":[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3],
"VGs": [1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2],
"x": [1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4],
"y": [2,4,6,8,4,8,12,16,3,9,27,81,6,18,54,162,4,12,75,200,8,24,150,400]
})
#make Vis/invis buttons for pixels
buttons=[]
pixels = df.pixel.unique()
for pixel in pixels :
vis = list(np.isin(pixels,pixel ))
dict_ = dict(method='restyle',
label="pixel " +str(pixel),
visible=True,
args=[{'label': "pixel " +str(pixel),
'visible':vis,
}
])
buttons.append(dict_)
um = [{'buttons':buttons,
'direction': 'down'}
]
#color map
VG_distinct_colors ={}
distinc_color = ['#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4', '#46f0f0']
for indx, VG in enumerate(list(df['VGs'].unique())):
VG_distinct_colors[VG] =distinc_color[indx]
#start figure
fig = make_subplots(specs=[[{"secondary_y": True}]])
#In legend show VG, button update change Pixel
for (VG, pixel), grp in df.groupby (["VGs", "pixel"]):
fig.add_trace(go.Scatter(x=grp["x"], y=grp["y"], legendgroup=str(VG), visible = False,mode='lines', name = str(VG), line_color=VG_distinct_colors[VG],
), col=1, row=1)
fig.update_layout(updatemenus=um)
### SOMETHING HERE LIKE
**fig.update_layout(Traces that are related to Button 1 are visible)**
fig.show()
解决方案
推荐阅读
- date - 让用户选择在 SSRS 中选择“所有时间”日期的最佳方式
- neo4j - Neo4J Cypher - 从时间戳中减去持续时间
- http - 缓存控制不返回 304
- javascript - ExpressJS 重定向在浏览器中给出 net::ERR_SSL_PROTOCOL_ERROR 错误
- google-apps-script - 返回二维数组的特定行并写入 Range
- python - 如何在 5x5 矩阵中在 1 和 0 之间切换并更新矩阵?熄灯逻辑游戏
- csv - Google Cloud Data Fusion 未在 GCS Bucket 中生成 CSV 输出
- jsonschema - 在python中验证json模式中的未知属性名称
- azure - Cosmos DB:是否曾经从更改源中删除更改?
- nginx - 如何使用 Nginx 在子目录中安装 Ghost?(得到 404)