logo

ジュリアでレイアウトを使ってサブプロットを描く方法 📂ジュリア

ジュリアでレイアウトを使ってサブプロットを描く方法

概要

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)

easyone.png

ただ、プロットを複数同時にまとめてプロットし直しても、とりあえずサブプロットにはなる。

簡単なレイアウトlayout

plot(data, layout = 6)

easytwo.png

plot(data, layout = (3,2))

easygrid.png

簡単に整数でやるのもいいし、具体的にタプルを渡して望んだ通りのグリッドを作ることができる。もちろん、整数を渡さなくても同じように動くから、タプルを渡す場合だけ覚えておけばいい。

複雑なレイアウト@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)

hardgrid.png

空白の作成_

上記の例で、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