logo

Overlaying Plots on Heatmaps in Julia 📂Julia

Overlaying Plots on Heatmaps in Julia

Code

Let’s say we want to draw a sine curve from 00 to 2π2\pi on the heatmap of the array (5,5)(5,5). You might want to write the code like this, but as you can see in the figure, it doesn’t output as desired.

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

This is because the horizontal and vertical range of array AA is recognized as from 11 to 55. To solve this, you can specify the horizontal and vertical range of AA as below. Note that if you do not specify the range of array AA and only specify the range shown in the heatmap, it will be displayed as below.

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

Now, if we redraw the sine curve on p1, it is drawn correctly as desired.

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

3.png

Environment

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