2016-06-23 55 views
0

我有一個函數繪製一組數據,其中突出顯示了一些點(計算機測量值),並要求用戶輸入有關這些點(這些點的理論值點)以校準設備。如何強制matplotlib在函數結束之前繪圖

這用於正常工作。然而,現在,如果不改變任何東西,那麼直到函數結束纔會顯示該圖。以下是我的代碼示例(我在jupyter筆記本中運行):

plot_peaks獲取數據並返回峯的x座標以及突出顯示峯的數據圖。

%matplotlib qt 
def func(data): 
    plot_points = plot_peaks(data) # plot_peaks returns a list of points that gets saved as plot_points AND plots peaks in a window 
    for number, point in enumerate(plot_points): 
     print("What is the coordinate of point %f?" %(number)) # ask user for the theoretical coordinate of the recorded peak 
     answer = input("> ") 
     function_that_saves_user_inputs # placeholder function to save lines 
    return user_inputs_vs_plot_points # dictionary 

用戶需要繪圖才能看到峯值是什麼,才能輸入理論值。但是,直到所有的數據點都被用戶輸入,情節纔會顯示出來。

如果我使用:

%matplotlib inline 

那麼圖顯示了用戶輸入任何東西之前。但我不能內聯。

事情我已經嘗試:

  • 使用ion() plot_peaks內(沒有變化)
  • plt.show(block=False) plot_peaks內(沒有變化)
  • 增加另一plt.show()func()內(彈出一個空白窗口,當功能終止,然後在新窗口中顯示所需的圖)
  • 更改後端

回答

1

對於它的價值,我找到了一個解決我的具體問題的答案(經過大量的試驗和錯誤)。

我需要的是在繼續繪製一個情節以暫停很長時間之前的功能。我不知道爲什麼,也許這與python開始執行下列命令之前未完成的繪圖有關。如果有人知道爲什麼這是很好的知道。

我所做的只是在plot_peaks()方法的末尾添加了一個plt.pause(1)。這意味着圖形有時間在調用函數的下一部分之前完全顯示。