2017-04-01 82 views
1

我正在修改this example與使用matplotlib的部件的圖表進行交互。 我通常的工作方式是交互式的,從spyder我只是調用一個繪製函數。 我的目標是爲沒有安裝Python的用戶提供一個可執行文件,因此作爲一箇中間步驟,我將這些功能包裝到腳本中。 我有獨立的腳本最小的經驗,所以簡而言之礦山看起來像這樣:python腳本的Matplotlib交互部件

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()命令,我不需要有當我從IPython殼工作,否則這樣做:

python my_plot.py 

不會產生任何結果。通過添加plt.show(),窗口顯示出我在初始化部分定義的圖形。但是,沒有交互發生。

運行像我這樣的腳本時實現交互的正確方法是什麼?

回答

0

雖然我不知道所有的細節,我瞭解到:

  • 腳本的默認模式是non-interactive
  • 這意味着
    • 生成沒有情節,直到show()
    • 腳本執行不在語句後執行

因此,我對show()電話是爲時過早,實際上堵住了update函數的定義及其與slider.on_change()事件有關。

show()移動到函數定義的最後一行即可獲得所需的行爲。