バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回はScilabによる波形表示。
Scilabの波形表示はMATLABと同一。
特殊なグラフ表示は乖離する可能性が高いが、そこまで複雑使い方はしない予定。
今回は、Juliaについて。
登場人物
博識フクロウのフクさん

イラスト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
Juliaの場合

最後はJuliaか。

Juliaはフクさんも良く分からないんだよね?

分らないなりに一応調べてはきた。

どんか感じなの?

まずパッケージとしてはPlotsかPyPlotを使う。
PyPlotはmatplotlibが裏で動いているようだな。
仕様的にはPyPlotの方がMATLAB,Python,Scilabに近い。

まぁ裏でmatplotlibが動いてるならそうなるんだろうね。

Juliaの文化はあまり良くは知らないが、もしかしたらPlotsを使うべきとかあるのかもしれないが、本シリーズでは他のツール、言語に近いPyPlotを使おうと思う。

変に書き方が乖離するとめんどくさい事にもなりそうだしねー。
波形表示

基本的にはMATLABの仕様に寄せている感じではあるが、
描画パラメータ指定の一括指示は出来ないようだ。
よって、linestyle、color、markerに分けて指定する。
> using LinearAlgebra
> using PyPlot
> x=range(0,2*pi,length=200)
> plot(x,sin.(x),linestyle="--", color="r", marker="")
> plot(x,cos.(x),linestyle="-.", color="b", marker="")

MATLABとかだと、’–r’で一括で指定出来ていたのが、それぞれ別で指定してあげないと行けないのかー。

まぁ、そのうち仕様が変わってMATLAB側に揃えられる可能性もあるけどね。
現状では分けて指定するようだ。

あと、x軸の作成がlinspaceじゃないのか。

ここもJuliaならではだな。
昔はlinspace関数もあったようだが、現在はrange関数で同じことができるので代替してる。

まぁ、そのうち仕様が変わってMATLAB側に揃えられる可能性もあるけどね。
現状では分けて指定するようだ。

あと、sin関数を使うには、LinearAlgebraのパッケージが必要になる。
そして、sin関数にベクトルを渡す際は関数名の後ろに「.」を付けてsin.(x)とする必要がある。
「関数をベクトル化するDot構文」と呼ばれてるようだな。
暗黙的に呼び出す関数を非ベクトル版、ベクトル版に分けていると推測される。

むっちゃ似てるのに細かく違うんだな・・・。

まぁJITコンパイルして高速化させてるからね。
そこらへんの兼ね合いでそうなってるのかも。
波形表示(複数グラフ)

そして複数グラフ。
これはMATLABに完全に合わせてるな。
> using LinearAlgebra
> using PyPlot
> x=range(0,2*pi,length=200)
> subplot(2,3,1)
> plot(x,sin.(x),linestyle="--", color="r", marker="")
> subplot(2,3,2)
> plot(x,cos.(x),linestyle="-.", color="b", marker="")
> subplot(2,3,3)
> plot(x,sin.(x),linestyle="--", color="r", marker="")
> subplot(2,3,4)
> plot(x,cos.(x),linestyle="-.", color="b", marker="")
> subplot(2,3,5)
> plot(x,sin.(x),linestyle="--", color="r", marker="")
> subplot(2,3,6)
> plot(x,cos.(x),linestyle="-.", color="b", marker="")

裏でmatplotlibが動いているって言ってたからpython側に合わせてるのかと思ったら
MATLAB側に合わせてるのね。

ここはちょっと有難いかもね。
ラインスタイル

ラインスタイルの種類はMATLABと一緒だ。
| 指定子 | 線種 | 
|---|---|
| ‘-‘ | 実線 (既定の設定) | 
| ‘–‘ | 破線 | 
| ‘:’ | 点線 | 
| ‘-.’ | 一点鎖線 | 
色指定

これもMATLAB・・・というか他の環境と一緒だな。
| 指定子 | 色 | 
|---|---|
| b | 青 (Blue) | 
| g | 緑 (Green) | 
| r | 赤 (Red) | 
| c | シアン (Cyan) | 
| m | マゼンタ (Magenta) | 
| y | 黄 (Yellow) | 
| k | 黒 (Black) | 
| w | 白 (White) | 
マーカー指定

マーカー関してはmatplotlib側に合わせているようだな。
| 指定子 | マーカタイプ | 
|---|---|
| “.” | 点 | 
| “,” | 四角形 | 
| “o” | 円 | 
| “v” | 下向き三角形 | 
| “^” | 上向き三角形 | 
| “<“ | 左向き三角形 | 
| “>” | 右向き三角形 | 
| “1” | Y 字 | 
| “2” | Y 字 (上下反転) | 
| “3” | Y 字 (90 度時計回り) | 
| “4” | Y 字 (90 度反時計回り) | 
| “8” | 八角形 | 
| “s” | 四角形 | 
| “p” | 五角形 | 
| “*” | 星印 | 
| “h” | 六角形 (縦長) | 
| “H” | 六角形 (横長) | 
| “+” | プラス (+) 印 | 
| “x” | バツ (×) 印 | 
| “D” | 菱形 (ダイヤモンド) | 
| “d” | 細い菱形 (ダイヤモンド) | 
| “|” | 縦線 | 
| “_” | 横線 | 
| “None” | マーカーなし | 
| ” “ | マーカーなし | 
| “” | マーカーなし | 

まぁ慣れればどうとでもなりそうってところかなぁ。

いい感じに寄せてくれてるから、
この点は正直助かるな。
まとめ

まとめだよ。
- JuliaはPlotsかPyPlotで波形表示。- PyPlotはmatplotlibのラッパーらしく、使い勝手が他の環境と似ている。
 
- PyPlotの描画パラメータは個別に指定する必要あり。
バックナンバーはこちら。
 
 



コメント