You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia中提取并复用/组合子图?

在Julia中提取并复用Plots子图的方法

当你已经生成包含多子图的Plots对象(比如示例中的pp和gg),直接用plot(pp[1], gg[2], layout=(1,2))无法将提取的Subplot对象组合成新图——因为Plots.jl不支持直接把Subplot实例作为plot函数的输入参数。

示例场景代码:

using Plots
gr()

pp = plot(0:0.01:2, [sin.(0:0.01:2), cos.(0:0.01:2)], layout=(1,2));
gg = plot(0:0.01:2, [sin.(0:0.01:2).^2, cos.(0:0.01:2).^2], layout=(1,2));

# 此方式无法生效
mixed = plot(pp[1], gg[2], layout=(1,2))

通用解决方案

要实现子图的复用与组合,需要提取原Subplot中的绘图系列(series),再将其添加到新的绘图布局中:

# 创建空的新图,指定目标布局
mixed = plot(layout=(1,2))

# 将pp[1]的所有绘图系列添加到新图的第1个子图
plot!(mixed[1], pp[1].series_list...)

# 将gg[2]的所有绘图系列添加到新图的第2个子图
plot!(mixed[2], gg[2].series_list...)

核心逻辑是访问Subplot对象的series_list属性——它包含了该子图内所有曲线的数据集、样式等信息,通过plot!将这些系列逐一添加到新图的对应位置,即可完整复用原Subplot的内容。

针对ControlSystems.jl波特图的优化方案

对于bodeplot的场景,除了上述通用方法,你还可以通过参数直接生成单一类型的子图:

  • 仅生成幅频图:bodeplot(sys, plotphase=false)
  • 仅生成相频图:bodeplot(sys, plotmag=false)

通过这种方式,你可以直接得到独立的幅频或相频图,再用plot(p_mag, p_phase, layout=(1,2))轻松组合,无需从已有的复合图中提取子图。

内容的提问来源于stack exchange,提问作者ITA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:05:39