重新标记用于使用plotly.express.graph_objs创建热图动画的滑块上的动画刻度线

问题描述 投票:0回答:1

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

我的动画中有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()

这很好,我得到了其中一张相框的下面图像:

enter image description here

我要进行两项调整:

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

我认为我的问题是我完全理解是通过]完成的

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

我正在使用滑块显示热图动画,并希望重新标记出现在滑块上的刻度线。我的动画中有50帧,并且热图中的每个矩阵都有尺寸...

python plotly
1个回答
0
投票

要在滑块的刻度标签上显示秒,您可以在用于创建滑块步骤的字典中设置label=str(window_length * i),而要在滑块上方显示“时间:20秒”,则可以在用于创建滑块步骤的字典中设置currentvalue={"prefix": "Time: ", "suffix": " seconds"}创建滑块本身。我在下面提供了一个示例。

© www.soinside.com 2019 - 2024. All rights reserved.