logo

ジュリアでヒートマップにプロットを重ねて描く方法 📂ジュリア

ジュリアでヒートマップにプロットを重ねて描く方法

コード

例えば、$(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

環境

  • OS: Windows10
  • Version: Julia 1.7.1, Plots 1.25.3