Julia Plotsについて
最終更新:2020/10/27
Juliaで図を書く時のメモ. MATLABユーザーの自分にとって, 使いやすいパッケージを探していた. MATLABに近いわけではないが, Plotsが現状便利に思う.
Julia Version 1.5.0
使い方
例
Plotsは, GR, Plotly, PyPlot など既存のコード ( バックエンド ) に対して, 共通のコマンドで図を書かせるパッケージだと思う. なので, 最初にどのバックエンドを使うか指定することができる. 例えば, 以下は, pyplotを使って, svgで出力させる例.
Julia
using Plots pyplot(fmt=:svg)
あとは, Documentation にある文法に従って書けば, グラフが描ける.
Julia
x = collect(-2.0:0.05:2.0) plot(sin.(x), size=(320, 240)) savefig("img1.png")
バックエンドにはあるがPlotsにない引数を使いたい時
しかし, バックエンドにはあるけれど, Plotsではまた対応していない引数を与えたいことがある. その場合は, バックエンドを呼び出せばなんとかなった.
例1:dpiの指定
先程の図を, 600dpiで出したいとする. この時, 以下のようにdpi=600
を指定しても
エラーになる. Plotsのsavefig
は, dpiという引数を受けられないのだろう.
Julia
savefig("img1.png", dpi=600) # ERROR: MethodError: no method matching savefig(::String; dpi=600)
ならば, 直接PyPlotに命令してやればいい. もはや, Plotsを使っているとは言えないけれど.
Julia
PyPlot.savefig("img2.png", dpi=600)
例2:streamplot
ポテンシャル流れを可視化するのにpyplotのstreamlineが面白い. Plotsでは, 未対応だったが, PyPlotを直接呼ぶことで対応できた.
Julia
x = collect(-2.0:0.05:2.0) y = collect(-2.0:0.05:2.0) z = x’ .+ im*y w = @. z^2 PyPlot.figure(figsize=(3,3)) PyPlot.streamplot(x, y, real(w), -imag(w), density=(1.3,1.3), color="red", linewidth=0.5, arrowsize=0.7) PyPlot.savefig("img3.png", dpi=300)