バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回はMATLABによる波形表示。
plotとsubplotを使用する。
ラインスタイル、色、マーカを変更することも可能。
今回はこれのPython版
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
Pythonの場合

次はPythonだねー。

Pythonに関してはmatplotlibを使えばほぼMATLABだな。

確かにかなり似ているというか、ほぼ一緒。

まぁMATLABユーザに合わせて、似てようなインターフェースにしたという経緯はあるっぽいな。
Matplotlibは、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできるし、wxPython、Qt、GTKといった一般的なGUIツールキット製のアプリケーションにグラフの描画機能を組みこむこともできる。MATLABの対話環境のようなものを提供するpylabというインタフェースも持っている。Matplotlibは、BSDスタイルのライセンスの下で配布されている。
Wikipediaより(https://ja.wikipedia.org/wiki/Matplotlib)

まぁ似せてもらえるのはありがたいよね。
波形表示

まずは単純な波形表示
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x=np.linspace(0,2*np.pi,200)
>>> plt.plot(x,np.sin(x),'--r')
>>> plt.plot(x,np.cos(x),'-.b')
>>> plt.show()


matplotlibが使えるようにimportが必要で、
pltのエイリアスを定義するのが通例っぽいね。

そうだね。
あと、MATLABと異なる点としてはplt.show()を呼び出した段階で表示されるという点。
よって、MATLABのhold onに相当する仕様はない。
というか常にhold onと思っても良いかもね。

まぁこっちの方が直感的な使い方な感じはするよね。
波形表示(複数グラフ)

matplotlibもMATLABみたいに複数の波形を同一Windowsに出せたよね?

そうそう。
こっちはやや複雑な書き方にはなるが、慣れの問題だろう。
MATLABの時のように縦に2つ、横3つの構成で出してみよう。
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x=np.linspace(0,2*np.pi,200)
>>> fig = plt.figure()
>>> ax = fig.add_subplot(2,3,1)
>>> ax.plot(x,np.sin(x),'--r')
>>> ax = fig.add_subplot(2,3,2)
>>> ax.plot(x,np.cos(x),'-.b')
>>> ax = fig.add_subplot(2,3,3)
>>> ax.plot(x,np.sin(x),'--r')
>>> ax = fig.add_subplot(2,3,4)
>>> ax.plot(x,np.cos(x),'-.b')
>>> ax = fig.add_subplot(2,3,5)
>>> ax.plot(x,np.sin(x),'--r')
>>> ax = fig.add_subplot(2,3,6)
>>> ax.plot(x,np.cos(x),'-.b')
>>> plt.show()

ラインスタイル

ラインスタイルも指定できるが、MATLAB一緒なだな。
| 指定子 | 線種 |
|---|---|
| ‘-‘ | 実線 (既定の設定) |
| ‘–‘ | 破線 |
| ‘:’ | 点線 |
| ‘-.’ | 一点鎖線 |
色指定

色指定もMATLABと一緒だったと思う。
| 指定子 | 色 |
|---|---|
| b | 青 (Blue) |
| g | 緑 (Green) |
| r | 赤 (Red) |
| c | シアン (Cyan) |
| m | マゼンタ (Magenta) |
| y | 黄 (Yellow) |
| k | 黒 (Black) |
| w | 白 (White) |
マーカ指定

マーカ指定もおおよそ一緒だな。
まぁMATLABには無いのもあるけど、使うことは少ないかな。
| 指定子 | マーカタイプ |
|---|---|
| “.” | 点 |
| “,” | 四角形 |
| “o” | 円 |
| “v” | 下向き三角形 |
| “^” | 上向き三角形 |
| “<“ | 左向き三角形 |
| “>” | 右向き三角形 |
| “1” | Y 字 |
| “2” | Y 字 (上下反転) |
| “3” | Y 字 (90 度時計回り) |
| “4” | Y 字 (90 度反時計回り) |
| “8” | 八角形 |
| “s” | 四角形 |
| “p” | 五角形 |
| “*” | 星印 |
| “h” | 六角形 (縦長) |
| “H” | 六角形 (横長) |
| “+” | プラス (+) 印 |
| “x” | バツ (×) 印 |
| “D” | 菱形 (ダイヤモンド) |
| “d” | 細い菱形 (ダイヤモンド) |
| “|” | 縦線 |
| “_” | 横線 |
| “None” | マーカーなし |
| None | マーカーなし |
| ” “ | マーカーなし |
| “” | マーカーなし |
| ‘$…$’ | Mathtext を用いて数式やギリシャ文字を指定 |
まとめ

まとめだよ。
- pythonで波形表示する場合はmatplotlibを使用する。
- matplotlibはMATLAB仕様に合わせこんでくれている。
- マーカに関しては、MATLABにはない指定子もある。
バックナンバーはこちら。



コメント