Python3を勉強している最中に行き詰ってしまいました。お時間がある方、是非ご指導お願いいたします。
###実現したいこと
テキストファイルa.txt内のデータのうち、2列目(c1)の値がmin以上max以下であるものだけ抽出して表示&一列目(c0)の行番号を横軸、2列目の値を縦横に設定し、黒い直線としてプロットしたい。
ソースコード↓
Python3
1import numpy as np 2import matplotlib.pyplot as plt 3 4f= 'a.txt' 5min= 0.0085 6max= 0.0090 7c0,c1,c2= np.loadtxt(f, unpack=True) 8 9infile= open(f, 'r') 10for line in infile: 11 cols=line.split() 12 c0= int(cols[0]) 13 c1= float(cols[1]) 14 c2= float(cols[2]) 15 if c1 >= min and c1 <= max: 16 plt.plot(c0, c1) 17 plt.show() 18 print(c0, c1)
a.txt にデータを書き込むためのコード↓
Python3
1import numpy as np 2 3b = np.arange(0.005, 0.05, 0.0001) 4c = np.arange(1.5, 2.51, 0.01) 5 6with open('a.txt','w') as f: 7 for a in range(1,101): 8 f.write('{:<3d} {:<3f} {:<3f}\n'.format(a,b[a-1],c[a-1])) 9 10"""" 111 0.005000 1.500000 122 0.005100 1.510000 133 0.005200 1.520000 144 0.005300 1.530000 15... 1636 0.008500 1.850000 1737 0.008600 1.860000 1838 0.008700 1.870000 1939 0.008800 1.880000 2040 0.008900 1.890000 2141 0.009000 1.900000 22... 2398 0.014700 2.470000 2499 0.014800 2.480000 25100 0.014900 2.490000 26"""" 27
###実行結果と発生した問題
問題1:抽出したいデータを正しく抽出できなかった。
ソースコードを実行すると、ターミナル上には1行目から35行目まで表示されました。抽出したかったのは、36行目から41行目までです。
問題2:表示したいグラフを正常に表示できなかった。横軸(c0)が浮動小数点数になってしまった。
実行すると、以下のようなグラフが複数個表示されました。
複数でたグラフについて、それぞれのグラフは縦軸と横軸の値が少しずつ違っていますが、何もpictureが表示されていないという点は同じです。
情報の不足があれば随時追記します。ご指導よろしくお願いいたします。
###実行環境
macOS Mojave
Atom 1.31.2
回答2件
あなたの回答
tips
プレビュー