logo

줄리아에서 레이아웃 주고 서브플랏 그리는 법 📂줄리아

줄리아에서 레이아웃 주고 서브플랏 그리는 법

개요

줄리아에서 서브플랏에 관련된 옵션은 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 = (3,:)과 같이 행과 열 중 하나만 정확하게 기입하고 나머지는 콜론으로 두는 식으로 알아서 사이즈를 맞추게 할 수도 있다.

복잡한 레이아웃 @layout

l = @layout [p1 ; p2 p2]

단순 그리드가 아니라 첫 행에 하나의 그림, 둘째 행에 두 열로 그림이 들어가게끔 지시하는 Plots.GridLayout 타입의 l를 정의했다. 이를 layout의 입력으로써 주면 다음과 같이 훨씬 복잡한 레이아웃이 표현된다.

p = plot(
        plot(rand(10)),
        plot(rand(100)),
        plot(rand(1000)),
        layout = l)

hardgrid.png

빈 자리 만들기 _

위의 예시에서 첫행의 그림도 아래의 행과 같은 크기로, 가운데 정렬하여 넣기를 원한다면 양쪽에 빈공간을 만들어주면 된다. _로 빈자리라는 것을 나타낼 수 있다. {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