本稿の目標
以前の記事で、読み込んだ波形を描画するのは、単に
st[0].plot()
とするだけでOKだとご紹介しました。これはこれで便利なのですが、matplotlibを使って、工夫を凝らした図を作りたいということもあるでしょう。そこで、matplotlibを使って簡単な図を作ります。単一の波形を描画した上で、目盛りの数値の書式の指定、軸ラベルやタイトル、その他任意の印字をします。なお、複数の波形を使った描画については、回を改めて紹介しようと思います。
波形の描画
波形データは、st[0].data
に1次元のnumpy.ndarray
の形で入っています。例えば、以下のようにすれば、図が描けます:
import matplotlib.pyplot as plt
plt.plot(st[0].data)
plt.show()
横軸を時間にする
ただ、これだと横軸がサンプル番号になってしまいます。横軸をデータ開始時からの時間にするには、例えば、以下のようにすれば良いです。
import numpy as np
plt.plot(np.arange(st[0].stats.npts) * st[0].stats.delta, st[0].data)
plt.show()
指数表記にする
y軸に位取りのための0がたくさんあって見づらいので、表記を変えたいと思います。
fig = plt.figure()
plt.ticklabel_format(style="sci", axis="y", scilimits=(0,0))
plt.plot(np.arange(st[0].stats.npts) * st[0].stats.delta, st[0].data)
plt.show()
軸にラベルをつける
両軸にラベルをつけたくなった場合は、以下のようにしてください:
fig = plt.figure()
plt.plot(np.arange(st[0].stats.npts) * st[0].stats.delta, st[0].data)
plt.xlabel("time [s]")
plt.ylabel("velocity [m/s]")
plt.ticklabel_format(style="sci", axis="y", scilimits=(0,0))
plt.show()
いろいろ盛り込んでみました
なんやかんやありまして、いろいろな要素を盛り込んだ図ができました。何をやったかは説明しませんが、おそらく推測可能だろうと思います。詳しくはマニュアルをご参照下さい。
fig = plt.figure()
plt.plot(np.arange(st[0].stats.npts) * st[0].stats.delta, st[0].data, color='r')
plt.xlabel("time [s]")
plt.ylabel("velocity [m/s]")
plt.title(st[0].stats.station + " " + st[0].stats.channel)
plt.ticklabel_format(style="sci", axis="y", scilimits=(0,0))
plt.text(40,1e-5,"P",fontdict={'fontsize':'14'})
plt.text(46,1e-5,"S",fontdict={'fontsize':'14', 'weight':'bold'})
plt.xlim(30,60)
plt.ylim(-6e-4,6e-4)
plt.show()
また機会を改めて、複数の波形を一度にプロットしてみたりしたいと思います。では。