MATLAB,Python,Scilab,Julia比較 その42【波形表示方法④】

MATLAB,Python,Scilab,Julia比較 その42【波形表示方法④】 数値計算
MATLAB,Python,Scilab,Julia比較 その42【波形表示方法④】

バックナンバーはこちら。
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="")
julia_wave、plot
太郎くん
太郎くん

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="")
Julia PyPlots複数グラフ、subplot、plot
太郎くん
太郎くん

裏で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の描画パラメータは個別に指定する必要あり。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました