如何在函数结束前强制matplotlib绘图

时间:2016-06-23 19:12:10

标签: python matplotlib jupyter-notebook

我有一个功能,可以绘制一组数据,突出显示某些点(计算机测量值),并询问用户输入这些点(这些点的理论值),以便校准设备。

这曾经很好用。但是,现在,在不更改任何内容的情况下,直到函数结束时才会显示该图。以下是我的代码示例(我在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

然后在用户输入任何内容之前显示该情节。但我不能内联插图。

我尝试过的事情:

  • 在plot_peaks中使用ion()(不做任何改动)
  • plot_peaks里面的
  • plt.show(block=False)(一无变化)
  • plt.show()内添加另一个func()(弹出一个空白窗口,当函数终止时,所需的图表会显示在新窗口中)
  • 更改后端

1 个答案:

答案 0 :(得分:1)

为了它的价值,我找到了我的具体问题的答案(经过大量的试验和错误)。

我需要的是在继续之前绘制剧情暂停很长时间的功能。我不知道为什么,也许它与python开始执行以下命令之前未完成的情节有关。如果有人知道为什么这会很有用。

我所做的就是在plt.pause(1)方法的末尾添加plot_peaks()。这意味着图形有时间在调用函数的下一部分之前完全显示。