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

Mathematica中如何为不同Z0e的S11函数设置不同颜色并加图例?

解决Mathematica绘图同色无图例问题

直接修改代码,通过显式生成带标签的曲线列表,并添加图例选项即可解决。以下是两种可行的修改方案:


方案一:封装函数+批量生成带标签曲线

Z0eList = {120, 240}; Z0o = 60; ZS = 50; ZL = 100;

theta[f_] := (Pi/2)*(f/0.92);

(* 将S11计算封装为带Z0e参数的函数 *)
S11[z0e_, f_] := Module[{Z11, Z22, Z12, Z21, ABCDpcl, Apcl, Bpcl, Cpcl, Dpcl},
    Z11 = -I*(z0e + Z0o)*Cot[theta[f]]/2;
    Z22 = -I*(z0e + Z0o)*Cot[theta[f]]/2;
    Z12 = -I*(z0e - Z0o)*Csc[theta[f]]/2;
    Z21 = -I*(z0e - Z0o)*Csc[theta[f]]/2;
    ABCDpcl = {{Z11/Z21, (Z11*Z22 - Z12*Z21)/Z21}, {1/Z21, Z22/Z21}};
    Apcl = ABCDpcl[[1, 1]];
    Bpcl = ABCDpcl[[1, 2]];
    Cpcl = ABCDpcl[[2, 1]];
    Dpcl = ABCDpcl[[2, 2]];
    (Apcl*ZL + Bpcl - Cpcl*ZS*ZL - Dpcl*ZS)/(Apcl*ZL + Bpcl + Cpcl*ZS*ZL + Dpcl*ZS)
];

(* 生成每条曲线的表达式与对应标签 *)
curves = Table[
    20*Log[Abs[S11[z0e, f]]],
    {z0e, Z0eList},
    PlotLabel -> "Z0e = " <> ToString[z0e]
];

(* 绘图并添加自定义位置的图例 *)
Plot[curves, {f, 0, 4}, 
    PlotRange -> {-50, 0}, 
    Frame -> {{True, False}, {True, False}}, 
    FrameLabel -> {{"S11 (dB)", None}, {"Frequency (GHz)", None}},
    PlotLegends -> Placed[LineLegend[Z0eList, LegendLabel -> "Z0e Values"], {0.8, 0.2}]
]

方案二:简化写法+手动指定样式

Z0e = {120, 240}; Z0o = 60; ZS = 50; ZL = 100;

theta = (Pi/2)*(f/0.92);

(* 定义带Z0e参数的中间变量 *)
Z11[z0e_] := -I*(z0e + Z0o)*Cot[theta]/2;
Z22[z0e_] := -I*(z0e + Z0o)*Cot[theta]/2;
Z12[z0e_] := -I*(z0e - Z0o)*Csc[theta]/2;
Z21[z0e_] := -I*(z0e - Z0o)*Csc[theta]/2;

S11[z0e_] := Module[{ABCDpcl, Apcl, Bpcl, Cpcl, Dpcl},
    ABCDpcl = {{Z11[z0e]/Z21[z0e], (Z11[z0e]*Z22[z0e] - Z12[z0e]*Z21[z0e])/Z21[z0e]}, {1/Z21[z0e], Z22[z0e]/Z21[z0e]}};
    Apcl = ABCDpcl[[1, 1]];
    Bpcl = ABCDpcl[[1, 2]];
    Cpcl = ABCDpcl[[2, 1]];
    Dpcl = ABCDpcl[[2, 2]];
    (Apcl*ZL + Bpcl - Cpcl*ZS*ZL - Dpcl*ZS)/(Apcl*ZL + Bpcl + Cpcl*ZS*ZL + Dpcl*ZS)
];

(* 直接生成曲线并指定图例、颜色 *)
Plot[
    Evaluate[Table[20*Log[Abs[S11[z0e]]], {z0e, Z0e}]],
    {f, 0, 4},
    PlotRange -> {-50, 0},
    Frame -> {{True, False}, {True, False}},
    FrameLabel -> {{"S11 (dB)", None}, {"Frequency (GHz)", None}},
    PlotLegends -> {"Z0e=120", "Z0e=240"},
    PlotStyle -> {Blue, Red} (* 可选:手动指定曲线颜色增强区分度 *)
]

关键修改说明

  • 把S11计算逻辑与Z0e参数绑定,避免列表运算导致的无标签问题
  • 通过PlotLegends选项添加明确的图例标识,支持自定义位置和样式
  • 可选通过PlotStyle手动指定曲线颜色,进一步强化不同Z0e曲线的区分度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:54:20