目標
JuliaでN(0,1)をプロットする(Gadfly.jl)
i.e.
をプロットする(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
ブラウザが開いて,こんな感じになる
N(0,1)をcollect(-5:0.1:5)でプロット pic.twitter.com/HeBdUVhknV
— 眠気.jl (@julialangisthe) 2019年4月2日
できた!
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])
ブラウザ開いて出る
注意
- plot()はy軸指定だけでも描画されるが、その場合xは0からスタートする
- 正規分布は自分で決めなくても,Distributions.jl使えば問題ない
(私はTeXっぽい書き方が好きなので書いた,合理性はない)
感想
matplotlibのようで、慣れやすいと思った
参考書籍,URL
Data Science with Julia Gadfly公式