ジュリアでヒートマップにプロットを重ねて描く方法
コード
例えば、$(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)
これは、配列$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)) #그림 (나)
これで、p1
の上にサイン曲線を再度描くと、望んだ通りに正しく描かれる。
plot!(x, y, color=:red, width=3)
環境
- OS: Windows10
- Version: Julia 1.7.1, Plots 1.25.3