def InteractivePlaneProfile():
srcLoc = 0.
orientation = "X"
nRx = 100
def foo(Field, Sigma, Scale, Time):
fig = plt.figure(figsize=(8,4))
ax1 = plt.subplot(111)
r = np.linspace(-1000., 0., nRx)
val_ex, val_hy = PlaneEHfield(r, t=Time, sig=Sigma)
if Field == "Ex":
val = val_ex.flatten()
label = "Ex-field (V/m)"
elif Field == "Hy":
val = val_hy.flatten()
label = "Hy-field (A/m)"
if Scale == "log":
val_p, val_n = DisPosNegvalues(val)
ax1.plot(r, val_p, 'k-', lw=2)
ax1.plot(r, val_n, 'k--', lw=2)
ax1.set_yscale(Scale)
elif Scale == "linear":
ax1.plot(r, val, 'k-', lw=2)
ax1.set_yscale(Scale)
y = ax1.yaxis.get_majorticklocs()
yticksa = np.linspace(y.min(), y.max(), 3)
ax1.yaxis.set_ticks(yticksa)
ax1.yaxis.set_major_formatter(ticker.FormatStrFormatter("%.1e"))
ax1.set_xlim(0, -1000)
ax1.set_ylabel(label, color='k')
ax1.set_xlabel("Z (m)")
ax1.grid(True)
plt.show()
Q2 = widgets.interactive (foo
,Field=widgets.ToggleButtons(options=['Ex','Hy'], value='Ex')
,Sigma=widgets.FloatText(value=1, continuous_update=False, description='$\sigma$ (S/m)') \
,Scale=widgets.ToggleButtons(options=['log','linear'], value="linear") \
,Time=widgets.FloatSlider(min=0.01, max=1., step=0.01, value=0., description='$t$ (s)')
)
return Q2
评论列表
文章目录