2016-04-05 40 views
0

時間の経過とともに更新され、プログラムの実行をブロックしないMatPlotLib.PyPlotグラフをプロットします。更新されるたびに新しいグラフを表示するためにキーを押す必要はありません。実行をブロックせずにMatPlotLibグラフを表示および更新する

私は欲しいものにはplt.show(block=False)が必要だと思います。しかし、私のコードは望みどおりに動作しません。ここで

は私のコードです:

import matplotlib.pyplot as plt 
import time 

def ShowGraph(): 
    n = 2 
    while True: 
    x = [i for i in range(n)] 
    y = [i for i in range(n)] 
    plt.plot(x, y, 'r-') 
    plt.ylim([0, 10]) 
    plt.xlim([0, 10]) 
    plt.show(block=False) 
    time.sleep(1) 
    n += 1 

ShowGraph() 

これは、赤い線がそれぞれの時間を長くなって、毎秒新しいグラフをプロットする必要があります。しかし、それは最初にplt.show()を呼び出した後のグラフです。私は間違って何をしていますか?

答えて

1

あなたのコードをそのまま試してみましたが、無限ループに陥ってしまいました。だから、私はあなたのコードを少し修正してそれを動作させました。
主に、ループの最初の反復の後にplt.draw()を使用してグラフを更新する必要があります。非対話モードのplt.show()はそのままグラフを表示し、block=Falseでもそれを更新しません。図を更新するにはまだplt.draw()が必要です。

import matplotlib.pyplot as plt 
import time 

def ShowGraph(): 
    n = 2 
    j = 1 
    while j <= 10: 
     x = [i for i in range(n)] 
     y = [i for i in range(n)] 
     plt.plot(x, y, 'r-') 
     plt.ylim([0, 10]) 
     plt.xlim([0, 10]) 
     if j > 1: 
      plt.draw() 
     else: 
      plt.show(block=False) 
     time.sleep(1) 
     n += 1 
     j += 1 

ShowGraph() 
関連する問題