Julia Plotsについて

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")
		
result

バックエンドにはあるが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)
		
result

例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)
		
result

この記事のTOP    BACK    TOP