首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何巧妙地使用滑块来表示从乞求到现在的步态?

如何巧妙地使用滑块来表示从乞求到现在的步态?
EN

Stack Overflow用户
提问于 2022-11-15 12:43:28
回答 1查看 24关注 0票数 0
  • 我想使用plotly显示2个正弦波
  • 我想使用滑块来显示从time=0到当前滑块步骤的进度。

我试图编写以下代码:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd

if __name__ == "__main__":

    time    = np.arange(0, 10, 0.1)
    val1    = np.sin(time)
    val2    = np.sin(time) * np.sin(time)

    df          = pd.DataFrame(val1, columns=['val-1'])
    df['val-2'] = val2

    fig = px.scatter(df, animation_frame=df.index)
    fig.update_layout(xaxis_range=[-100, 100])
    fig.update_layout(yaxis_range=[-1.1, 1.1])

    fig.show()

但是我可以看到两个正弦波的当前值(而不是从step=0到当前步骤的整个波)。

我如何更改我的代码并看到从step=0到当前步骤的整个正弦波?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-16 03:50:31

我认为无法在Express中绘制线条图,所以我必须使用图形对象。在参考文献中有一个例子,我将适应你的作业。对于图形结构,在动画中创建初始图形数据和相应的帧,通过创建步骤和滑块将它们添加到布局中。

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

if __name__ == "__main__":

    time    = np.arange(0, 10, 0.1)
    val1    = np.sin(time)
    val2    = np.sin(time) * np.sin(time)

    df          = pd.DataFrame(val1, columns=['val-1'])
    df['val-2'] = val2
    
    data = [go.Scatter(mode='lines', x=df.index, y=df['val-1'], name='val-1'),
            go.Scatter(mode='lines', x=df.index, y=df['val-2'], name='val-2')]
    
    steps = []
    for i in df.index:
        step = dict(method="animate", args=[[i], {"title": f'step:{i}'}], label=f'{i}')
        steps.append(step)

    sliders = [dict(active=0, currentvalue={"prefix": "Step: "}, steps=steps)]
    
    layout = go.Layout(dict(xaxis=dict(range=[-100,100]),
                            yaxis=dict(range=[-1.1,1.1]),
                            updatemenus=[dict(type='buttons',
                                              buttons=[dict(label='Start', method='animate', args=[None]),
                                                       dict(label='Pause',
                                                            method='animate',
                                                            args=[[None], dict(frame=dict(
                                                                duration=0,
                                                                redraw=False),
                                                                mode="immediate", 
                                                                formcurrent=True,
                                                                transition=dict(duration=0, easing="linear")
                                                            )])],
                                              direction="left",
                                              pad=dict(r=10, t=40),
                                              showactive=False,
                                              x=0.00,
                                              xanchor="right",
                                              y=0,
                                              yanchor="top")],
                            sliders=sliders
                           ))
        
    frames = []
    for i in df.index:
        frame = go.Frame(data=[go.Scatter(x=df.index[0:i], y=df.loc[0:i,'val-1']),
                               go.Scatter(x=df.index[0:i], y=df.loc[0:i,'val-2'])],
                   layout=go.Layout(title_text=f'Step:{i}'),
                   name=i)
        frames.append(frame)  


    fig = go.Figure(data=data, layout=layout, frames=frames)

    fig.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74445829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档