前提・実現したいこと
白背景上に黒点を生成し、黒点がそれぞれの速度を持って動いているようにみえるプログラムにおいて
動いた黒点が任意の座標を通過した回数を折れ線グラフでリアルタイムに描画したい
発生している問題・エラーメッセージ
前半部分の白背景上に黒点を生成し、動いているようなプログラムを作成したのですが
後半部分のグラフを描画する方法が分かりません。
いい方法がありましたら教えて頂けると幸いです。
該当のソースコード
Python3
1import numpy as np 2import cv2 3import random 4 5x = 1000 6y = 1000 7 8def random1(): 9 10 index = random.randrange(0, 999) # 点のx軸座標を生成 11 speed = random.randrange(-3,3) # 個々の点の速度(≠0)を生成 12 while speed == 0: 13 speed = random.randrange(-3, 3) 14 15 return index,speed 16 17if __name__=='__main__': 18 array = np.full((x,y,3),255,dtype="uint8") #1000x1000 背景白画像の配列 19 20 b = [] #個々の黒点のx軸座標を格納 21 speedlist = [] #個々の黒点が動く速度を格納 22 for i in range(1000): 23 #ランダムな座標に黒点を1000個生成(大きさ3x3) 24 index,speed = random1() 25 for j in range(-1,2): 26 if 0 <= index + j < 1000: 27 for k in range(-1, 2): 28 if 0 <= i + k < 1000: 29 array[i + k, index + j] = 0 30 31 b.append(index) 32 speedlist.append(speed) 33 34 #生成した黒点を白く塗りつぶし、その隣を黒く塗り個々の速度で動いたようにみせる 35 for i in range(1000): 36 for j in range(1000): 37 for k in range(-1, 2): 38 if 0 <= j + k < 1000: 39 for l in range(-1, 2): 40 if 0 <= b[j] + l < 1000: 41 array[j + k , b[j] + l] = 255 42 b[j] += speedlist[j] 43 #画面外に黒点が消えた場合、新たに点を作成 44 if b[j] <= -2 or b[j] >= 1001 : 45 index,speed = random1() 46 47 b[j] = index 48 speedlist[j] = speed 49 50 for l in range(-1,2): 51 if 0 <= b[j] + l < 999: 52 for m in range(-1,2): 53 if 0 <= j + m < 999: 54 array[ j + m, b[j] + l ]= 0 55 56 57 cv2.imshow("people",array) 58 cv2.waitKey(100)
試したこと
検索するとmatplotlibでリアルタイムにグラフが描画できるようなのですが、
経過時間をx軸、通過回数をy軸にする方法が分からず・・・・・・
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。