Pythonで地震波時刻歴図を描いてみた!

プログラミングの勉強

 Pythonを使って地震波時刻歴データを読み込んで時刻歴図を作成してみました。以前、”VBAでワークシート上に地震波時刻歴図を作成する!”で作成した地震波時刻歴に比べても、意外に簡単にきれいな時刻歴図を描くことができましたので紹介します。

地震波のディレクトリー

 地震波は、 ”VBAでワークシート上に地震波時刻歴図を作成する!” で利用したものと同じデータで”wavesample.txt”です。プログラム”wavepict.py”と同じディレクトリーに格納しておきます。

 ”Figure_1.pdf” は、図化実行後、地震波時刻歴図を同じディレクトリー内にpdfファイルとして保存したものです。

プログラムの内容

 プログラムの内容は以下のようです。

  1. ライブラリー(モジュール)の設定(matplotlibとnumpy)
  2. 地震波データファイルを読み込み、時間xsと地震波加速度ysを作成
  3. 作図の指示

ライブラリーのインポート

  • 図化のライブラリ     import matplotlib.pyplot as plt
  • 数学的処理のライブラリー import numpy as np

 matplotlibのグラフは、figureオブジェクト(描画領域に関するもの)とaxesオブジェクト(描画領域内に描くグラフに関するもの)で構成されます。

データを1行ずつ読む

 with文open関数を組み合わせてファイルを開くと、1行ずつ読み込みながら処理を行うことができ、メモリを多く使用しないようになります。

with open(引数名) as 変数名:

行内の文字を抜き出す

 行内の何文字目から何文字目かを指定して、抜き出します。文字位置は0から数え、最後の文字位置は最後の文字位置に1を加えた数字です。

line[最初の文字位置最後の文字位置]

figureオブジェクトの作成

 plt.figure()でfigureオブジェクトを作成し、カッコ内にfigsize(横サイズ,縦サイズ)でサイズを指定します。

変数名=plt.figure(figsize=(横サイズ , 縦サイズ))

描画領域にaxes(グラフ)を追加

 add_axes()でfigure内にグラフを追加します。カッコ内にグラフ(axes)の左座標(右上が(1,1))と幅の比と高さの比を記入してグラフの大きさを指定します。

axesの変数名=figureの変数名.add_axes((左下の座標x, 左下の座標y ,幅の比,高さの比))

縦軸(横軸)の最大値、最小値を指定

 set_xlim()set_ylim()で軸の最大値と最小値を指定します。

横軸 axesの変数名.set_xlim(最小値 ,最大値)    縦軸 axesの変数名.set_ylim(最小値 ,最大値)

縦軸(横軸)の目盛文字を指定

 set_xticks()で目盛文字を指定し、カッコ内のnp.arange()で最大、最小、ピッチを指定します。なお、np.arangeはnumpyの等差数列を指定する関数です。

  • 横軸 axesの変数名.set_xticks(np.arange(最小値 , 最大値 , ピッチ))
  • 縦軸 axesの変数名.set_yticks(np.arange(最小値 , 最大値 , ピッチ))

折れ線グラフの描画

 plot()で折れ線グラフの描画を指示します。その他、loglog:両対数グラフ、scatter:散布図など、グラフの種類に応じてメソッドが異なります。

axesの変数名 .plot(x軸のデータ,y軸のデータ,color=”“,linewidth=太さ)

グラフのプロットコマンド

 今回は、その他のプロットコマンドとして以下の物を用いています。

  • グラフタイトル  plt.title(タイトル名)
  • 横軸タイトル   plt.xlabel(‘ラベル名‘,size=サイズ)
  • 縦軸タイトル   plt.ylabel(‘ラベル名‘,size=サイズ) 
  • グリッド線の描写 plt.grid()
  • 図化指示     plt.show()

図化の実行

 図化の実行は、PowerShellにおいて、プログラムwavepict.pyを実行し、入力ファイル名を入力します。

 すると、下図のようなファイルが立ち上がります。下側の右端のフロッピーディスクのマークを左クリックして、種々のファイル形式での保存が可能です。

地震波時刻歴図を作成して

 今回は、地震波時刻歴をPythonで作成してみました。matplotlibを用いることで、簡単にきれいな図が作成できました。Pythonの魅力は、このようなライブラリーが揃っており、手間を省いてくれる点にあると感じます。

 次回は確率統計の世界を覗いてみようと思いますが、その前に信頼性設計のFORMを用いて破壊確率を少し計算してみようと思っています。

コメント

タイトルとURLをコピーしました