줄리아에서 레이아웃 주고 서브플랏 그리는 법
개요
줄리아에서 서브플랏에 관련된 옵션은 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 = (3,:)
과 같이 행과 열 중 하나만 정확하게 기입하고 나머지는 콜론으로 두는 식으로 알아서 사이즈를 맞추게 할 수도 있다.
복잡한 레이아웃 @layout
l = @layout [p1 ; p2 p2]
단순 그리드가 아니라 첫 행에 하나의 그림, 둘째 행에 두 열로 그림이 들어가게끔 지시하는 Plots.GridLayout
타입의 l
를 정의했다. 이를 layout
의 입력으로써 주면 다음과 같이 훨씬 복잡한 레이아웃이 표현된다.
p = plot(
plot(rand(10)),
plot(rand(100)),
plot(rand(1000)),
layout = l)
빈 자리 만들기 _
위의 예시에서 첫행의 그림도 아래의 행과 같은 크기로, 가운데 정렬하여 넣기를 원한다면 양쪽에 빈공간을 만들어주면 된다. _
로 빈자리라는 것을 나타낼 수 있다. {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