plot - 如果存在其他绘图元素,则在 Makie.jl 中链接轴
问题描述
我想创建多个带有各自图例和共享 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
现在还包括对象。Makie.MakieLayout.Legend()
Axis
我需要事先过滤掉这些,还是有更好的方法来生成所需的图?
解决方案
我不确定这是最好的方法,但是您可以确保将轴传递给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...)
推荐阅读
- c# - 如何在共享项目中使用 Google Admob?
- php - 将查询字符串转换为 .php
- docker - 使用 kubeadm 初始化 kubernetes 1.12.0 失败:找不到节点“xxx”
- jags - 如何指示观察值是两个采样值中的较大值?
- c - 无法诊断堆缓冲区溢出
- javascript - 自动检查单选按钮或自动填充文本框
- ios - 无法在 AppStore Connect 中启用公共链接
- inno-setup - Inno Script:如果应用程序已安装,则跳过密码
- ruby-on-rails - 为什么我不能从另一个方法访问这个实例变量(在模型中)?
- java - 如何在android java中将3个范围零设置为double