Python

【Python】numpy, matplotlib, math を使いこなせ! – 入門② グラフ描画を深掘りしてみよう!

前回は “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を使ってデータ整形をする方法をご紹介していきます!!

ABOUT ME
どんぶラッコ
ECコンサルタント、システムエンジニアを経て、quintet株式会社CTOに就任。普段はNuxt.jsやLaravelを使用しています。

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
RELATED POST

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です