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...)
我想创建多个具有各自图例和共享 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...)