Link 坐标轴在 Makie.jl 中(如果存在其他绘图元素)

Link axes in Makie.jl if other plot elements present

我想创建多个具有各自图例和共享 y 轴限制的子图。我目前正在通过执行以下操作在循环中创建子图:

fig = Figure()
    
for i in 1:3
    lines(fig[i, 1], rand(10), label="$i")
end
    
linkyaxes!(fig.content...)
    
fig

这工作正常,但是接下来尝试为每个子图添加图例时:

fig = Figure()
    
for i in 1:3
    lines(fig[i, 1], rand(10), label="$i")
    axislegend()
end
    
linkyaxes!(fig.content...)
    
fig

这现在会引发错误:

MethodError: Cannot `convert` an object of type Makie.MakieLayout.Legend to an object of type Makie.MakieLayout.Axis

因为 fig.content 现在除了原来的 Axis 个对象之外还包括 Makie.MakieLayout.Legend() 个对象。

我是否需要事先过滤掉这些,或者是否有更好的方法来生成所需的图?

我不确定这是最好的方法,但您可以确保以这种方式将轴传递给 linkyaxes!

axs = []

fig = Figure()

for i in 1:3
    ax = lines(fig[i, 1], rand(10), label="$i").axis
    push!(axs, ax)
    axislegend()
end

linkyaxes!(axs...)