Python3でtxtファイルからグラフを書く

データロガーから取得してきた値等、外部のtxtファイルを読んできて
プログラムで処理したいことがしばしばあります。

ググったら割とすぐに出てきますが、手元にも残しておきたいので
Python3でtxtファイル等の外部ファイルの中身を読んでくる方法のメモです。
ついでにmatplotlibを使ってデータをグラフにするところまでメモしておきます。

matplotlibをいれる

matpllotlibがまだ入ってない人はインストールしておきます。pipを使って

pip3 -m install matplotlib

これでmatplotlibがインストールされました。

データを読んできてグラフを表示

続いて読みたいサンプルファイルを用意します。
僕はこんなサンプルファイルを用意しました。

f:id:Tmegane:20181016202902p:plain

カンマ区切りでデータが入っています(画像は上の方数行のみ)

これをPythonで読み込み、かつmatplotlibを用いてグラフにします。
ソースコードはこんな感じ。

# coding: utf-8
 
from pylab import *
import math
 
def main():

   ####データ読み込み#####

    f = open('test_77.txt',"r") #生データの入ったファイルを読み込み
    xlist = list()
    ylist = list()
    for line in f:
        s = line.split(",")
        xx = s[0]
        yy = s[1][:-1]
        xlist.append(xx)
        ylist.append(yy)
    f.close()


    ####データ読み込みここまで####
 
##    lines = plot(xlist, ylist, 'k',label="test") #線形プロットをするときは
##    setp(lines, color='r', linewidth=2.0) #この2行のコメントを外し,以下の1行をコメントに
 
    scatter(xlist,ylist,s=15,c='b',label="77K") #散布図用 c='色'
 
    xlabel('magnetic field[Oe]',fontsize=15) #横軸のタイトル
    ylabel('magnetization [emu]',fontsize=15)#縦軸のタイトル
    grid() #グリッド線の表示
    legend(loc='lower right') #凡例の表示,loc='位置'
    xmax=3100
    ymax=35
    xmin=-3100
    ymin=-35
    axis([xmin,xmax,ymin,ymax]) #グラフの最大値最小値の範囲設定
 
 
if __name__ == '__main__':
    main()
    show()

プログラムの前半でtest_77.txtというファイルを開き、1列目、2列目のそれぞれの数値を配列として読み込んでいます。
後半はグラフを描写するための内容。

で、上記プログラムを使って実際に書いてみたグラフはこんな感じ。

f:id:Tmegane:20181016203400p:plain

Dyを液体窒素につけて77Kまで冷やし、磁場を変化させていった時のDyの磁化の変化をプロットしています。
磁場の上げ過程と下げ過程でヒステリシスが見えています。

それはおいといて、こんな感じでtxtファイルの読み込みとグラフの描写ができます。