眠気.jl

投稿=不定期

Juliaで標準正規分布のプロット(Gadfly.jl)

目標

JuliaでN(0,1)をプロットする(Gadfly.jl)
i.e.
 f(x)=\frac{1}{\sqrt{2 \pi \sigma^{2}}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right) \quad(x \in \mathbb{R})
をプロットする(xは[-5,5]に制限します)

動機

Data Science with Julia
で見たプロットがかっこよかったので、やりたくなった

作業環境

前回同様

やってみる

(v1.1) pkg> activate 0402
(0402) > add FFTW Gadfly Cairo
shell> vim uni.jl

uni.jlを書いていく

using Pkg
Pkg.activate("0402")

using Gadfly, Cairo

Gadfly.push_theme(:dark)
#なぜなら、かっこいいから. 自分で色を設定して、themeとして登録もできる詳しくは  
#http://gadflyjl.org/v0.6.3/man/themes.html#Named-themes-1

f(x, μ, σ) = (1/(√(2*π*σ^2)))*exp(-(x-μ^2)^2/2σ^2)
#正規分布作る  
x = collect(-5:0.1:5)
#numpyならnp.arange(-5,5,0.1)

Standard_Normal_dist = [f(x, 0, 1) for x in x]

p = plot(x=x, y=Standard_Normal_dist)
display(p)

実行してみる

shell> julia uni.jl

ブラウザが開いて,こんな感じになる

できた!

Gadfly.jlの挙動について(おまけ)(3パターン)

ipynbの場合
plot(y=[1,2,3])  

下のセルに出る

p = plot(y=[1,2,3])
display(p)  

ブラウザが開いて出る

.jlを作って,julia .jlで呼ぶ場合
plot(y=[1,2,3])

何も出ない

p = plot(y=[1,2,3])
display(p)

ブラウザが開いて出る

REPLの場合
plot(y=[1,2,3])

ブラウザ開いて出る

注意
  1. plot()はy軸指定だけでも描画されるが、その場合xは0からスタートする
  2. 正規分布は自分で決めなくても,Distributions.jl使えば問題ない
    (私はTeXっぽい書き方が好きなので書いた,合理性はない)

感想

matplotlibのようで、慣れやすいと思った

参考書籍,URL

Data Science with Julia Gadfly公式