我需要在plotly中创建一个散点图,并在其上面覆盖一个线图。我发现如果我使用图形对象创建图形,然后使用plotlyexpress添加数据,我就可以做到这一点:
scatter = px.scatter(...)
line = px.line(...)
fig = go.Figure(data=scatter.data + line.data)
但问题是我需要使用 slider 对线图进行动画处理,而当我使用 graph_objects 接口(interface)时我无法做到这一点。
你知道有没有办法做到这一点?
最佳答案
- 模拟了两个独立数据集(轴和动画的维度一致)
- 尚不清楚您是否想要集成两个动画人物或动画和固定人物。使用了前者,后者将是相同的,只是固定图形的痕迹将被复制到每个目标帧中
- 一切都是为了保持一致
- 整合痕迹
- 整合框架
- 选择布局
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
r = np.random.RandomState(22)
# simulate two independent dataframes. NB some consistency for axes and animation
df_line = pd.DataFrame(
{
"animation": np.repeat(list("ABCDE"), 10),
"x": np.tile(np.linspace(0, 10, 10), 5),
"y": r.uniform(0, 10, 50),
}
)
df_scatter = pd.DataFrame(
{
"animation": np.repeat(list("ABCDE"), 50),
"x": np.tile(np.linspace(0, 10, 50), 5),
"y": r.uniform(0, 10, 250),
}
)
line = px.line(df_line, x="x", y="y", animation_frame="animation")
scatter = px.scatter(df_scatter, x="x", y="y", animation_frame="animation")
# now integrate, traces, frames and layout
fig = go.Figure(
data=line.data + scatter.data,
frames=[
go.Frame(data=fr1.data + fr2.data, name=fr1.name)
for fr1, fr2 in zip(line.frames, scatter.frames)
],
layout=scatter.layout,
)
fig
关于Plotly:同一图中的散点图和动画线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73863843/