【发布时间】:2019-05-07 00:05:28
【问题描述】:
我有一个 python 文件Vis.py 具有以下两个功能:
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
def update(val): #needed for slider function of plot_test
pos = spos.val
ax.axis([pos,pos+10,-1,1])
fig.canvas.draw_idle()
def plot_test(data):
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
plt.plot(data)
plt.axis([0, 10, -1, 1])
axcolor = 'lightgoldenrodyellow'
axpos = plt.axes([0.2, 0.1, 0.65, 0.03], facecolor=axcolor)
spos = Slider(axpos, 'Pos', 0.1, 90.0)
spos.on_changed(update)
plt.show();
我正在尝试在单独的 ipynb 文件中使用 plot_test 函数:
%matplotlib notebook
from Vis import *
import numpy as np
t = np.arange(0.0, 200.0, 0.1)
s = np.sin(2*np.pi*t)
plot_test(s)
但是,情节并没有出现,甚至没有出现空白区域。我尝试在plot_test(s) 之前运行%matplotlib inline。这使得情节出现了,但它也摆脱了情节的互动性。
【问题讨论】:
-
对我来说很好用;尽管要获得交互式滑块,您需要在更新函数中定义
ax。最好使update成为plot_test()的一部分,这样ax可以在命名空间中访问。 -
呵呵奇怪。所以你可以使用底部的滑块,使用我的代码吗?关于更新功能,我同意你的看法,但是更新功能在我的示例中被用于整个互联网(matplotlib.org/gallery/widgets/slider_demo.html,stackoverflow.com/questions/31001713/…)。如果您可以提供一个明确的示例,其中 update 函数是
plot_test()函数的一部分并以交互方式工作,我很乐意接受它作为答案。
标签: python python-3.x matplotlib jupyter-notebook