gpt4 book ai didi

python - plotly .ly。对多个绘图使用 slider 控件

转载 作者:行者123 更新时间:2023-11-30 22:25:21 26 4
gpt4 key购买 nike

我想将 slider 控件添加到我的 plotly 图表 ( pic ) 以同时控制所有元素。

我只需一行即可轻松地将 slider 控件添加到图表中。在本例中,我将绘图列表(以字典的形式)放入 data 变量中:

plotly.graph_objs.Figure (data = [plot1,plot2], layout = layout)

而且效果非常好。

<小时/>

但是为了在同一个图表上绘制多条线,我必须将带有绘图的列表列表放入数据变量(我有吗?):

plotly.graph_objs.Figure (data = [[plot1.1, plot2.1], [plot1.2, plot2.2]], layout = layout)

但是plot.ly仍然需要字典列表。

Entry should subclass dict.

<小时/>

有没有办法使用一个 slider 控件同时控制多个元素?

import plotly
import plotly.plotly as py
import numpy as np

plotly.offline.init_notebook_mode()

exp = 2.71

N = 3

x_start = -N
x_end = N
dx = 0.1

y_start = -N
y_end = N
dy = 0.1


x_axis = np.arange(x_start, x_end, dx)
y_axis = np.arange(y_start, y_end, dy)


def pit(offset, x):
pit1 = []
for position in x:
pit1.append(1 - exp**(-36 * (position - offset)**2))
return pit1


def v_x(x):
vx = exp**(-x**2)
return vx


def v_y(x):
vy = 0.5 * exp**(-x**2)
return vy


def density(vx, vy):
den = []
for v1 in vx:
row = []
for v2 in vy:
row.append(v1 * v2)
den.append(row)
return den


vx = v_x(x_axis)
vy = v_y(y_axis)

den = density(vx, vy)


def contour(step=None):
return dict(
type='contour',
z=den,
colorscale=[[0, 'rgb(255,255,255)'], [1, 'rgb(49,163,84)']],
x=x_axis,
y=y_axis,
)


def vy_projection(step):
return dict(
visible=True,
type='scatter',
name=str(step),
marker=dict(color='rgb(255,0,0)'),
yaxis='y2',
x=x_axis,
y=vx * pit(step, x_axis)
)


def vx_projection(step):
return dict(
visible=True,
type='scatter',
name=str(step),
marker=dict(color='rgb(255,0,255)'),
xaxis='x2',
x=vy,
y=y_axis
)


trace1 = [
[vy_projection(step), vx_projection(step)]
for step in np.arange(-3, 3, 0.5)]

for plot in trace1[-1]:
plot['visible'] = True

steps = []
for i in range(len(trace1)):
step = dict(
method='restyle',
args=['visible', [False] * len(trace1)],
)
step['args'][1][i] = True
steps.append(step)

sliders = [dict(
active=10,
currentvalue={"prefix": "Step: "},
pad={"t": len(trace1)},
steps=steps
)]

layout = dict(
autosize=False,
width=500,
height=500,
sliders=sliders,
xaxis=dict(
range=[-3, 3],
),
xaxis2=dict(
domain=[0.9, 1],
showgrid=False,
zeroline=False,
),
yaxis=dict(
range=[-3, 3],
),
yaxis2=dict(
domain=[0.9, 1],
showgrid=False,
zeroline=False,
)

)
data = trace1[0]
fig = go.Figure(data=data, layout=layout)

# plotly.offline.plot(fig, filename='manipulate.html')
plotly.offline.iplot(fig)

最佳答案

这是使用 slider 控件操作多个轨迹的最小工作示例。

import plotly

plotly.offline.init_notebook_mode()

trace1 = dict(
type='scatter',
x=[0, 1],
y=[0, 0.5]
)
trace2 = dict(
type='scatter',
x=[0, 1],
y=[0, -0.5]
)

trace3 = dict(
type='scatter',
x=[0, 1],
y=[0, 1]
)
trace4 = dict(
type='scatter',
x=[0, 1],
y=[0, -1]
)

steps = [None, None]
steps[0] = dict(
method='restyle',
args=[
'visible', [False, True]
],
)
steps[1] = dict(
method='restyle',
args=[
'visible', [True, False]
],
)

sliders = dict(
steps=steps
)

layout = dict(
sliders=[sliders],
xaxis=dict(
range=[0, 1],
),
yaxis=dict(
range=[-1, 1],
),
)

data = plotly.graph_objs.Data([trace1, trace2, trace3, trace4])
fig = plotly.graph_objs.Figure(data=data, layout=layout)

# plotly.offline.plot(fig, filename='manipulate.html')
plotly.offline.iplot(fig)

关于python - plotly .ly。对多个绘图使用 slider 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554585/

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