◆当ページにはプロモーションが含まれています

Python

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

前回は “sin波を描画する” というテーマで記事を書きました。

https://proglearn.com/2020/01/23/%e3%80%90python%e3%80%91numpy-matplotlib-math-%e3%82%92%e4%bd%bf%e3%81%84%e3%81%93%e3%81%aa%e3%81%99-%e5%85%a5%e9%96%80%e2%91%a0sin%e6%b3%a2%e3%82%92%e6%8f%8f%e7%94%bb%e3%81%97%e3%81%a6%e3%81%bf/

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

エンジニアにおすすめ転職サイト

マイナビIT AGENT
迷ったらまずはココ。求人数が多いため希望や条件にマッチする求人が見つかる!

レバテックキャリア
担当者のレベルが高い。エンジニア特化で15年の実績がある実績で初回提案での内定率驚異の90%!

JOIN
副業やフリーランスとして高額報酬案件を見つけるならJOIN。未経験者でも案件獲得実績豊富が強み!

\面白いと思ったら/

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

@proglearn
一緒によく読まれている記事

COMMENT

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