gpt4 book ai didi

python - Plotly:重新标记 slider 上的动画刻度线

转载 作者:行者123 更新时间:2023-12-05 02:53:01 24 4
gpt4 key购买 nike

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

我的动画有 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. 在左下角,将“Time-step 4”替换为相应的秒数,在本例中为“Time-20 seconds”。
  2. 将 slider 上的刻度也重新标记为以秒为单位,例如刻度标记标签“step-3”被替换为“15”

我想我的问题是我很明白是通过

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

最佳答案

  • 要在 slider 的刻度标签上显示秒数,您可以在用于创建 slider 步长的字典中设置 label=str(window_length * i)

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

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()

enter image description here

关于python - Plotly:重新标记 slider 上的动画刻度线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62397485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com