前回は “sin波を描画する” というテーマで記事を書きました。
今回は、合成sin波を描画する例を通じて、グラフの描画をもっと練習してみましょう!
サンプルコード
先にサンプルコードを掲載します!
import matplotlib.pyplot as plt
import seaborn as sns
import math
import numpy as np
x = range(0,1000)
hz1 = 14
hz2 = 15
max_x = max(x)
y3 = np.array([math.sin(math.radians((360*hz1)/max_x * ms)) for ms in x])
y4 = np.array([math.sin(math.radians((360*hz2)/max_x * ms)) for ms in x])
sns.set()
plt.figure(figsize=(15.0, 6.0))
plt.plot(x, y3, label='14hz',linestyle="--", color='slateblue')
plt.plot(x, y4, label='15hz',linestyle="-.", color='orchid')
plt.plot(x, y3+y4, label='mix', color='red')
plt.legend() # 凡例を表示する
plt.xlabel("millisecond") # 横軸ラベル
plt.grid(True)
plt.show()
すると、こんなグラフが描画されるはずです!
このコードで使われているテクニックを確認していきましょう。
1. ヘルツ毎に描画が変わるようにする
前回、sin波を生成した時は、 ミリ秒をそのまま反映させていました。
# サイン波の生成
y = np.array([math.sin(math.radians(ms)) for ms in x])
これを、hzという変数を用意することで、生成される波の数をコントロールできるようにしています。
x = range(0,1000)
hz1 = 14
max_x = max(x)
y3 = np.array([math.sin(math.radians((360*hz1)/max_x * ms)) for ms in x])
2. 描画する
seaborn を使ってみる
前回はmatplotlibというライブラリを使っていましたが、今回はそれに加えてseabornも使っています。
matplotlibだけで描画するよりも綺麗にグラフが表示されます!
import seaborn as sns
でライブラリをインポートし。
sns.set()
を呼び出せばOKです!
線の書式を指定する
plt.plot()
を使う際に、オプションを指定することができます。
今回は、
- label … グラフの名前をつける
- linestyle … 実線、点線など
- color … グラフの線色
を使っています。
plt.plot(x, y3, label='14hz',linestyle="--", color='slateblue')
plt.plot(x, y4, label='15hz',linestyle="-.", color='orchid')
plt.plot(x, y3+y4, label='mix', color='red')
グラフへの落とし方はなんとなく想像がついたでしょうか?
次はpandasを使ってデータ整形をする方法をご紹介していきます!!