Python 图不会显示在while循环中

Python 图不会显示在while循环中,python,plot,while-loop,Python,Plot,While Loop,由于处理某些数据需要很长时间,所以在数据正常后,我需要在while循环中画线。但是图不能在while循环中显示,现在我将粘贴一个简化的代码,它也可以反映相同的问题。谢谢你的耐心 import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,2*pi,20) y=np.sin(x) z=np.cos(x) while 1: nPlt = input('input nPlt:') if nPlt == 1:

由于处理某些数据需要很长时间,所以在数据正常后,我需要在while循环中画线。但是图不能在while循环中显示,现在我将粘贴一个简化的代码,它也可以反映相同的问题。谢谢你的耐心

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,2*pi,20)
y=np.sin(x)
z=np.cos(x)
while 1:
    nPlt = input('input nPlt:')
    if nPlt == 1:
        plt.plot(x,y)
    elif nPlt == 2:
        plt.plot(x,z)
    else:
        break

如果您将代码更改为此,它应该可以工作

    import numpy as np
    import matplotlib.pyplot as plt

    x=np.linspace(0,2*pi,20)
    y=np.sin(x)
    z=np.cos(x)
    while 1:
        nPlt = eval(input('input nPlt:')) #Note eval was added
            if nPlt == 1:
                plt.plot(x,y)
            elif nPlt == 2:
                plt.plot(x,z)
            else:
                break
    plt.show() #Note I added this line
这是针对Python3的。我相信对于Python2而不是eval,您可以使用原始输入

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,2*np.pi,20)
y=np.sin(x)
z=np.cos(x)
while 1:
    nPlt = input('input nPlt:')
    if nPlt == 1:
        plt.plot(x,y)
    elif nPlt == 2:
        plt.plot(x,z)
    else:
        break
    plt.draw()
    plt.pause(0.1)

两件事,pi应该是np.pi;添加了plt.draw来绘制绘图,并添加了plt.pause0.1或其他一些时间来显示图形。

您修改的代码在IDEL2.7.6中运行良好,但在spyderPython 2.7中运行不一样,这真的很奇怪。我用来编译代码的软件是pythonx,y,它在while循环中绘图时不响应。感谢您的耐心,您的回答非常有用,并说明了某些过程。我有很多东西要学。