#1 やりたいこと
実験データが記録されたファイルから、値を取り出しグラフとして表示させたい。
#2 躓いている点
リストの要素数が25620個ほどあり、グラフが表示されない状態。
コードを以下に示す
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4 5time_1 = [] 6cwnd_1 = [] 7 8#ファイルを開く。 9with open('tcpout.txt') as f: 10 lines = f.readlines() 11 12 13#テキストファイル内のグラフ化したい行を取り出す。 14l_1 = [line for line in lines if '5001 32' in line] 15 16#取り出した行より、グラフに必要な値を抽出する。 17for line in l_1: 18 line_split = line.split(" ") 19 time_1.append(line_split[0]) 20 cwnd_1.append(line_split[6]) 21 22print(len(time_1)) 23print(len(cwnd_1)) 24 25#リストのグラフ化。散布図でグラフ化したい。 26plt.title("track cwnd") 27plt.xlabel("Time") 28plt.ylabel("cwnd") 29plt.scatter(time_1,cwnd_1) 30plt.show()
#現状
上記のプログラムで、要素数が3個の場合と要素数が25620個の場合で表示されるグラフを以下に示します。上が3個の場合で、下が25620個の場合です。要素数が多いと図のようにグラフが表示されません。
表示させるにはどうしたらよいのでしょうか?
有識者の方々御助力お願いします。
また、値を取得するテキストファイルを貼り付けすることができなかったため、テキストファイルの中身の一部を以下に示します。
このようなデータが数万行続くファイルになります。
132.449678731 100.64.0.1:5001 100.64.0.2:60424 56 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 28960 132.451673233 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa2b72 0x6da9ed3a 11 2147483647 29056 4578 29312 132.451782187 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 31872 132.453574989 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa2b72 0x6da9f2e2 12 2147483647 31872 4496 29312 132.453611768 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa4212 0x6da9f88a 13 2147483647 34816 4662 29312 132.453665328 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 37760 132.455576619 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa4212 0x6da9fe32 14 2147483647 37760 4810 29312 132.455622855 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa58b2 0x6daa03da 15 2147483647 40576 5188 29312 132.455659654 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 43520 132.457787236 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa58b2 0x6daa0982 16 2147483647 43520 5520 29312 132.457846988 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa6f52 0x6daa0f2a 17 2147483647 46336 6086 29312 132.459445006 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa6f52 0x6daa14d2 18 2147483647 49280 6584 29312 132.459453782 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa6f52 0x6daa1a7a 19 2147483647 52224 7219 29312 132.460760400 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 55040 132.462204295 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa9142 0x6daa2022 20 2147483647 55040 7777 29312 132.462220184 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa9c92 0x6daa25ca 21 2147483647 57984 8122 29312 132.462223811 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa9c92 0x6daa2b72 22 2147483647 60928 8426 29312 132.462313259 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 63744 132.463578439 100.64.0.2:60424 100.64.0.1:5001 32 0x6daa9c92 0x6daa311a 23 2147483647 63744 8451 29312 132.463592575 100.64.0.2:60424 100.64.0.1:5001 32 0x6daab8da 0x6daa36c2 24 2147483647 66688 8643 29312 132.463620518 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 69504 132.465613391 100.64.0.2:60424 100.64.0.1:5001 32 0x6daac9d2 0x6daa3c6a 25 2147483647 69504 8812 29312 132.465684163 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 72448 132.466932161 100.64.0.2:60424 100.64.0.1:5001 32 0x6daacf7a 0x6daa4212 25 25 72448 9213 29312 132.466959202 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 78208 132.469737756 100.64.0.2:60424 100.64.0.1:5001 32 0x6daacf7a 0x6daa4d62 25 25 78208 9708 29312 132.469812266 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 84096 132.471593813 100.64.0.2:60424 100.64.0.1:5001 32 0x6daae61a 0x6daa58b2 25 25 84096 10748 29312 132.471628128 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 89856 132.476697992 100.64.0.2:60424 100.64.0.1:5001 32 0x6daaf16a 0x6daa6402 25 25 89856 11457 29312 132.476915269 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 95616 132.478702961 100.64.0.2:60424 100.64.0.1:5001 32 0x6daaf712 0x6daa6f52 25 25 95616 13205 29312 132.478762763 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 110080 132.480604904 100.64.0.2:60424 100.64.0.1:5001 32 0x6dab1902 0x6daa8b9a 25 25 110080 16157 29312 132.480715862 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 115840 132.481991792 100.64.0.2:60424 100.64.0.1:5001 32 0x6dab1eaa 0x6daa96ea 25 25 115840 16985 29312 132.482042226 100.64.0.1:5001 100.64.0.2:60424 1480 0xe4249c61 0xe4249c61 10 2147483647 29312 3939 121728
#追記
要素数が25620個の場合でも、長時間待つことで表示されるようになりました。
しかし、処理が重いことが気になります。何か処理を軽くする方法はありますでしょうか?
#プログラムの最終版
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4 5time_1 = [] 6cwnd_1 = [] 7 8#ファイルを開く。 9with open('tcpout.txt') as f: 10 lines = f.readlines() 11 12 13#テキストファイル内のグラフ化したい行を取り出す。 14l_1 = [line for line in lines if '5001 32' in line] 15 16#取り出した行より、グラフに必要な値を抽出する。 17for line in l_1: 18 line_split = line.split(" ") 19 time_1.append(float(line_split[0])) 20 cwnd_1.append(int(line_split[6])) 21 22print(type(time_1[1])) 23print(type(cwnd_1[1])) 24print(len(time_1)) 25print(len(cwnd_1)) 26 27#リストのグラフ化。散布図でグラフ化したい。 28plt.title("track cwnd") 29plt.xlabel("Time") 30plt.ylabel("cwnd") 31plt.plot(time_1,cwnd_1,'.') 32#plt.scatter(time_1,cwnd_1) 33plt.show()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/24 03:28
2020/11/24 03:33
2020/11/24 04:06