在Plotly中为具有子图的图形添加滑块

3
我想使用plotly来展示4个不同的函数在它们共同参数变化时如何改变。我希望有4个堆叠的子图(每个函数一个)和一个滑块条,用于改变该参数。基本上我希望它看起来像这个页面上的Subplots with Shared X-Axes例子,除了底部有一个像这里所示的滑块。 这个页面看起来与我需要的非常相似,但我这里不需要范围滑块。以下是类似于我结构的一些代码(并非实际使用的代码)。
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,因为我想要一些自定义,并且可以在图形上滚动查看函数值。

1个回答

1

我最终在 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)

1
这是一个“仅链接答案”(link-only answer)(https://meta.stackexchange.com/q/225370/284827)。你能否编辑你的答案,包括你认为有用的相关部分?这样,如果链接失效,你的答案仍然对他人有用。 - Wai Ha Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接