ジュリアでレイアウトを使ってサブプロットを描く方法
概要
Juliaでは、サブプロットに関連するオプションはlayout
オプションを通して制御できる。
- 整数を入力すると、その数だけのグリッドをうまく作ってくれる。
- 整数の2-タプルを入力すると、指定どおりのグリッドを作ってくれる。
@layout
マクロを使ってPlots.GridLayout
タイプの複雑なレイアウトを構成する。
コード
using Plots
left = plot(randn(100), color = :red)
right = plot(randn(100), color = :blue)
plot(left, right)
png("easyone")
data = rand(10, 6)
plot(data, layout = 6)
png("easytwo")
plot(data, layout = (3,2))
png("easygrid")
l = @layout [p1 ; p2 p2]
p = plot(
plot(rand(10)),
plot(rand(100)),
plot(rand(1000)),
layout = l)
png("hardgrid")
簡単な列挙
left = plot(randn(100), color = :red)
right = plot(randn(100), color = :blue)
plot(left, right)
ただ、プロットを複数同時にまとめてプロットし直しても、とりあえずサブプロットにはなる。
簡単なレイアウトlayout
plot(data, layout = 6)
plot(data, layout = (3,2))
簡単に整数でやるのもいいし、具体的にタプルを渡して望んだ通りのグリッドを作ることができる。もちろん、整数を渡さなくても同じように動くから、タプルを渡す場合だけ覚えておけばいい。
複雑なレイアウト@layout
l = @layout [p1 ; p2 p2]
単純なグリッドではなく、1行目に1つの絵、2行目に2列の絵が入るように指示するPlots.GridLayout
タイプのl
を定義した。これをlayout
の入力として与えると、次のようにずっと複雑なレイアウトが表現される。
p = plot(
plot(rand(10)),
plot(rand(100)),
plot(rand(1000)),
layout = l)
空白の作成_
上記の例で、1行目の絵を下の行と同じサイズで、中央に配置したい場合は、両側に空間を作ればいい。_
で空白を示すことができる。{0.5w}
で幅を全体の半分に合わせれば、
l = @layout([_ p{0.5w} _; p p])
plot(
plot(rand(10)),
plot(rand(100)),
plot(rand(1000)),
layout = l)
環境
- OS: Windows
- julia: v1.6.3