如何生成图,暂停程序,直到图关闭,然后返回主函数

时间:2019-02-01 15:10:44

标签: python matplotlib

我目前正在尝试创建一个程序,该程序可以让我快速消化数据。程序的开始(未显示)接收数据并对其进行处理以使其易于阅读。我遇到的问题涉及到如何创建一个主要函数,该程序将在生成图形并随后将其关闭后继续返回该程序,以便更轻松地查看多个图形。

问题陈述:我想生成一个图形,将其弹出,并在屏幕上显示图形时让程序在后台暂停。然后,当它关闭时,我希望程序恢复并返回到main。

当前障碍:我尝试了多种创建图形的方式,但是我似乎无法做到这两个:(a)正确生成图形,并且(b)恢复程序然后同时返回main我发现“尝试->最终”方法可以帮助我回到主函数,但是现在我的图形不会出现,并且内核崩溃。

代码如下:

import matplotlib.pyplot as plt

class App(cmd.Cmd):

    prompt = 'Plot an Individual Pulse (a) or the entire array of data (b)? Just type a or b please: '

    def do_a(self, arg):
        userchoice= input('Would you like to see (a) Trimmed Data, or (b) another option (which the code is omitted for space)')
        if userchoice == "a":
            try:
                plt.plot(TrimmedVal)
                plt.title("All Trimmed Data (Includes 0's)")
                plt.ylabel("Number of Particles")
                plt.xlabel("Time (s)")
                plt.ticklabel_format(style='sci', axis='y', scilimits=(0,0))
                plt.draw()
                while plt.fignum_exists(1):
                    plt.pause
                return 
            finally: App().cmdloop()

if __name__ == '__main__':
    App().cmdloop()   

1 个答案:

答案 0 :(得分:1)

您要的是非交互模式下的默认设置,即运行脚本或在交互式解释器中调用plt.ioff()

import matplotlib.pyplot as plt

def myfunc():
    plt.plot(..)
    plt.show()

def main()
    myfunc()
    print("we're back in main")

main()