2015-09-01 2 views
0

, так как потребуется некоторое время для обработки некоторых данных, мне нужно рисовать линии в цикле 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 

ответ

0

Он должен работать, если вы измените свой код на этот

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 

Это для Python 3. Я считаю, для питона 2 вместо Eval можно использовать raw_input.

+0

Странно, что коды, которые вы модифицировали, могут хорошо работать в IDEL (2.7.6), но не то же самое в spyder (Python 2.7). программное обеспечение, которое я использую для компиляции кода, это python (x, y), который не отвечает при построении графика while. –

0
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) 

Две вещи, пи должны быть np.pi; добавлен plt.draw(), чтобы нарисовать график и plt.pause (0.1) (или некоторое другое время), чтобы позволить фигуре некоторое время для показа.

+0

Спасибо за ваше терпение, ур ответ очень полезен и проливает свет на определенный процесс. Для меня есть много вещей, чтобы учиться. –