簡體   English   中英

Plotly - 如何用 slider 覆蓋同一圖中的兩個圖

[英]Plotly - how to overlay two plots in same figure with slider

目標:在 Plotly 中使用 slider 時,在同一圖中有兩個散點圖。

預期行為:顯示一個圖,其中兩個圖同時更新並共享相同的“滑塊步驟”。

當前行為: slider 跨過兩個散點圖,將它們分開並一次顯示一個結果。

下面附上一個根據plotly 文檔改編的最小可復制示例。 除了簡單地繪制 sin(x),我還添加了帶有 cos(x) 的第二個 plot。 我嘗試使用add_traces() ,並創建兩個單獨的跟蹤並使用fig = go.Figure(data=trace_list1+trace_list2)更新它們,如下所示

任何幫助將非常感激!

import plotly.graph_objects as go
import numpy as np

# Create figure
fig = go.Figure()

# Add traces, one for each slider step
for step in np.arange(0, 5, 0.5):
    fig.add_traces([
        go.Scatter(
            x=np.arange(0, 10, 0.01),
            y=np.sin(step * np.arange(0, 10, 0.01))),
        go.Scatter(
            x=np.arange(0, 10, 0.01),
            y=np.cos(step * np.arange(0, 10, 0.01)))])

# Make 10th trace visible
fig.data[10].visible = True

# Create and add slider
steps = []
for i in range(len(fig.data)):
    step = dict(
        method="update",
        args=[{"visible": [False] * len(fig.data)},
              {"title": "Slider switched to step: " + str(i)}],  # layout attribute
    )
    step["args"][0]["visible"][i] = True  # Toggle i'th trace to "visible"
    steps.append(step)

sliders = [dict(
    active=10,
    currentvalue={"prefix": "Frequency: "},
    pad={"t": 50},
    steps=steps
)]
fig.update_layout(
    sliders=sliders
)
fig.show()

附上Plotly 社區維護的論壇上給出的答案。

# Create and add slider
steps = []
for i in range(len(fig.data)):
    if i % 2 == 0:
        step = dict(
            method="update",
            args=[{"visible": [False] * len(fig.data)},
                  {"title": "Slider switched to step: " + str(i/2)}],  # layout attribute
        )
        step["args"][0]["visible"][i] = True  # Toggle i'th trace to "visible"
        step["args"][0]["visible"][i+1] = True
        steps.append(step)

暫無
暫無

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

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