【问题标题】:Plotly:重新标记滑块上的动画刻度线
【发布时间】:2020-10-05 09:53:01
【问题描述】:

我正在使用滑动条来显示热图动画,并希望重新标记出现在滑动条上的刻度线。

我的动画有 50 帧,热图中的每个矩阵的维度都是 7×7,其中七行/列对应于列表,labels=['A','B','C' ,'D','D','F','G']。此外,在我的应用程序中,每一帧对应一个 5 秒的窗口,因此,例如,第 3 帧对应于 15 秒。到目前为止,这是我的简单示例,我正在模仿 https://plotly.com/python/sliders/ 的文档

import numpy as np
import plotly.graph_objs as go

N = 50
M = np.random.random((N, 7, 7))
labels=['A','B','C','D','D','F','G']
window_length=5

fig = go.Figure()

for step in range(N):
      fig.add_trace(
            go.Heatmap(x=labels,y=labels,z=M[step]))

fig.data[1].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": "Time: " + str(window_length*i)+' sec'}],)
    step["args"][0]["visible"][i] = True  # Toggle i'th trace to "visible"
    steps.append(step)


sliders = [dict(
    active=0,
    currentvalue={"prefix": "Time "},
    pad={"t": 5},
    steps=steps
)]


fig.update_layout(
    sliders=sliders)

fig.show()

这很好用,我的其中一个框架得到了下面的图像:

我想做两个调整:

  1. 在左下角,将“Time-step 4”替换为以秒为单位的相应值,在这种情况下为“Time-20 秒”。
  2. 将滑动条上的刻度重新标记为以秒为单位,例如刻度标签“step-3”替换为“15”

我认为我的问题是我很明白是由

完成的
sliders = [dict(
        active=0,
        currentvalue={"prefix": "Time "},
        pad={"t": 5},
        steps=steps
        )]

【问题讨论】:

    标签: python plotly


    【解决方案1】:
    • 要在滑块的刻度标签上显示秒数,您可以在用于创建滑块步数的字典中设置 label=str(window_length * i)

    • 要在滑块上方显示“时间:20 秒”,您可以在用于创建滑块本身的字典中设置 currentvalue={"prefix": "Time: ", "suffix": " seconds"}

    import numpy as np
    import plotly.graph_objs as go
    
    N = 50
    M = np.random.random((N, 7, 7))
    labels = ["A", "B", "C", "D", "D", "F", "G"]
    window_length = 5
    
    fig = go.Figure()
    
    for step in range(N):
          fig.add_trace(go.Heatmap(x=labels,y=labels,z=M[step]))
    
    fig.data[1].visible = True
    
    steps = []
    for i in range(len(fig.data)):
        step = dict(
            method="update",
            args=[{"visible": [False] * len(fig.data)},
            {"title": "Time: " + str(window_length * i)+" seconds"},],
        label=str(window_length * i))
        step["args"][0]["visible"][i] = True
        steps.append(step)
    
    sliders = [dict(
        active=0,
        currentvalue={"prefix": "Time: ", "suffix": " seconds"},
        pad={"t": 5},
        steps=steps
    )]
    
    fig.update_layout(sliders=sliders)
    
    fig.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多