1

我正在调整此示例以使用 的小部件与绘图进行交互matplotlib。我通常的工作方式是交互式的,spyder我只是从内部调用一个进行绘图的函数。我的目标是为尚未Python安装的用户提供可执行文件,因此作为中间步骤,我将函数包装到脚本中。我对独立脚本的经验很少,所以简而言之,我的看起来像这样:

import various_modules
def plotting()
    ...
    plot_some_initial_stuff
    sl = Slider()
    plt.show()                <-------
    def update()
       ...
       ax.set_ydata()
       fig.canvas.draw_idle()
    sl.on_change(update)
    return()
plotting()

所以我只是定义了绘图函数,然后调用它。我必须添加plt.show()命令,当我从 shell 工作时我不需要它IPython,否则执行:

python my_plot.py

不会产生任何东西。通过添加plt.show(),窗口将显示我在初始化部分中定义的图形。但是,没有交互发生。

像我这样运行脚本时实现交互的正确方法是什么?

4

1 回答 1

0

虽然我不知道所有细节,但我了解到:

  • 脚本的默认模式是非交互的
  • 这意味着
    • show()在被调用之前不会生成任何绘图
    • 语句后不继续执行脚本

因此,我的调用show()为时过早,实际上阻止了update函数的定义及其与slider.on_change()事件的连接。

移动show()到函数定义的最后一行以获得所需的行为就足够了。

于 2017-04-01T22:15:52.773 回答