줄리아에서 히트맵 위에 플랏 겹쳐서 그리는 방법

줄리아에서 히트맵 위에 플랏 겹쳐서 그리는 방법

코드

우리가 $(5,5)$ 배열의 히트맵 위에 $0$부터 $2\pi$까지의 사인 곡선을 그리고 싶다고 하자. 다음과 같은 코드로 짜고 싶겠지만 그림에서 보이듯 원하는 대로 출력되지 않는다.

using Plots

A = rand(Bool, 5,5)
heatmap(A, color=:greens)

x = range(0, 2pi, length=100)
y = sin.(x)
plot!(x, y, color=:red, width=3)

1.png

이는 배열 $A$의 가로, 세로의 범위가 $1$에서 $5$까지로 인식되기 때문이다. 이를 해결하기 위해 아래과 같은 코드로 $A$의 가로, 세로 범위가 각각 어디부터 어디까지인지 지정해주면 된다. 참고로 배열 $A$의 범위를 지정하지 않고, 히트맵이 보여지는 범위만 지정하면 아래의 (나)처럼 출력된다.

xₐ = range(0,2pi, length=5)
yₐ = range(-1.5,1.5, length=5)

p1 = heatmap(xₐ, yₐ, A, color=:greens, xlims=(0,2pi), ylims=(-1.5,1.5)) #그림 (가)
p2 = heatmap(A, color=:greens, xlims=(0,2pi), ylims=(-1.5,1.5)) #그림 (나)

2.png

이제 p1 위에 사인 곡선을 다시 그리면 원하는대로 제대로 그려진다.

plot!(x, y, color=:red, width=3)

3.png

환경

댓글