📊

Plots.jlのグラフをループで重ねる・並べる

2021/08/26に公開

https://zenn.dev/ohno/articles/3101433fbe9231
Plots.jlの簡単なサンプルは上記の記事にまとめてあるので併せて参考にしてください。Plots.jlのグラフをループで並べるには"splat"が利用できます。

グラフを重ねる

plt = plot(sin, label="sin")
plot!(plt, cos, label="cos")
plot(plt)

一行でも書けます。

plot!(plot(
sin, label="sin"),
cos, label="cos")

ループでも書けます。

plt = plot()
for i in 1:9
    plot!(plt, x->sin(x)^i, label=string(i), legend=:topleft, xlim=(0,1))
end
plot(plt)

グラフを並べる

plt1 = plot(sin, label="")
plt2 = plot(cos, label="")
plt3 = plot(exp, label="")
plt4 = plot(abs, label="")

plot(plt1, plt2, plt3, plt4)

一行でも書けます。

plot(
    plot(sin, label=""),
    plot(cos, label=""),
    plot(exp, label=""),
    plot(abs, label="")
)

ループで書くには"splat"を利用するとよいです。

plt = []
for i in 1:9
    push!(plt, plot(x->sin(x)^i, title=string(i), label=""))
end
plot(plt...)

splatについては以下を実行してみると

A = [3,4,5,6]
println(A[1],A[2],A[3],A[4])
println(A...)
println(A)

3456
3456
[3, 4, 5, 6]

となるのでprintln(A[1],A[2],A[3],A[4])println(A...)は同じ意味だと思われます。

Discussion