簡體   English   中英

在 plotly 中添加一個帶有子圖的滑塊

[英]Adding a slider to figure with subplots in plotly

我正在嘗試使用 plotly 來顯示 4 個不同的函數如何隨着它們的公共參數之一的變化而變化。 我想要 4 個堆疊的子圖(每個函數一個),其下方有一個用於更改參數的滑塊。 從本質上講,我希望它看起來像使用共享的X軸例如次要情節這個頁面,除了與像所示的一個滑塊在這里它的下面。 這個頁面看起來和我需要的很相似,只是我不想要這里的范圍滑塊。 這不是我正在使用的實際代碼,但為了方便起見,我將發布一些與我的結構類似的代碼:

def f(rho):
    dom = np.linspace(0, 1, 50)
    f1 = (dom - rho) ** 2
    f2 = np.sin(dom * rho)
    f3 = np.abs(dom - rho)
    f4 = dom ** rho
    return f1, f2, f3, f4

我想看看這 4 個函數如何隨np.linspace(0.5, 2, 101) rho 變化,所以 rho 是由滑塊控制的變量。 我喜歡 plotly 因為我想做一些自定義以及滾動圖形以查看函數值的能力。

我最終在 plotly 社區論壇上找到了這篇文章,它用以下代碼示例回答了這個問題:

import plotly.graph_objs as go
from plotly.tools import make_subplots

fig = make_subplots(1, 2)

fig.add_scatter(y=[1, 3, 2], row=1, col=1, visible=True)
fig.add_scatter(y=[3, 1, 1.5], row=1, col=1, visible='legendonly')
fig.add_scatter(y=[2, 2, 1], row=1, col=1, visible='legendonly')
fig.add_scatter(y=[1, 3, 2], row=1, col=2, visible=True)
fig.add_scatter(y=[1.5, 2, 2.5], row=1, col=2, visible='legendonly')
fig.add_scatter(y=[2.5, 1.2, 2.9], row=1, col=2, visible='legendonly')

steps = []
for i in range(3):
    step = dict(
        method = 'restyle',  
        args = ['visible', ['legendonly'] * len(fig.data)],
    )
    step['args'][1][i] = True
    step['args'][1][i+3] = True
    steps.append(step)

sliders = [dict(
    steps = steps,
)]

fig.layout.sliders = sliders

go.FigureWidget(fig)

暫無
暫無

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

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