Makie: multiple y-axes align yticks

Apparently setting the ylimit!() for all axes solve the issue.

Edit: Here’s an example if someone has the same issue:

using Makie
using LaTeXStrings
using Statistics

t = [0; 1; 2; 3; 4; 5]
y1 = [9; 7; 5; 1; 3; 5]
y2 = [12; 25; 23; 16; 34; 19]
y3 = [0; -1; -2; -3; -4; -5]

rng1 = abs(maximum(y1) - minimum(y1)) * 0.05
rng2 = abs(maximum(y2) - minimum(y2)) * 0.05
rng3 = abs(maximum(y3) - minimum(y3)) * 0.05

yticks1 = LinRange(floor(minimum(y1) - rng1), ceil(maximum(y1) + rng1), 5)
yticks2 = LinRange(floor(minimum(y2) - rng2), ceil(maximum(y2) + rng2), 5)
yticks3 = LinRange(floor(minimum(y3) - rng3), ceil(maximum(y3) + rng3), 5)



fig = Figure(size = (1600, 900))

ax1 = Axis(fig[1, 1],
           title  = "Test 1",
           xlabel = L"Time $t$ in $[s]$",
           ylabel = L"Values $V$ in $[unit]$",
           yticklabelcolor = :blue,
           ylabelcolor = :blue,
           xminorgridvisible = true,
           yminorgridvisible = true,
           xminorticks = IntervalsBetween(4),
           yminorticks = IntervalsBetween(4),
           yticks = yticks1
          )

ax2 = Axis(fig[1, 1],
           ylabel = L"Values $V$ in $[unit]$",
           yticklabelcolor = :red,
           yaxisposition = :right,
           ylabelcolor = :red,
           yticks = yticks2
          )

ax3 = Axis(fig[1, 1],
           ylabel = L"Values $V$ in $[unit]$",
           yticklabelcolor = :green,
           yaxisposition = :right,
           ylabelcolor = :green,
           yticklabelpad = 64.0,
           yticks = yticks3
          )

ylims!(ax1, floor(minimum(y1) - rng1), ceil(maximum(y1) + rng1))
ylims!(ax2, floor(minimum(y2) - rng2), ceil(maximum(y2) + rng2))
ylims!(ax3, floor(minimum(y3) - rng3), ceil(maximum(y3) + rng3))
hidespines!(ax2)
hidespines!(ax3)
hidexdecorations!(ax2)
hidexdecorations!(ax3)


lines!(ax1,
       t,
       y1,
       label = L"line $y1$",
       color = :blue
      )

lines!(ax2,
      t,
      y2,
      label = L"line $y2$",
      color = :red
     )

lines!(ax3,
       t,
       y3,
       label = L"line $y3$",
       color = :green
      )

fig
save("test2.png", fig)

1 Like