3

我的legend功能有一些问题。我的代码如下:

xax = logspace(1, 4, 1000);
R1 = sqrt(R11.*R21);
%freq and mag are vectors of length 300
loglog(freq, mag, 'k-');
hold on;    
loglog(xax, R1, 'r-');
loglog(f1, R1, 'bo');
loglog(f2, R1, 'bo');
legend('|Zvc|', 'R1', 'f1', 'f2');

然而,传说并没有像我预期的那样工作。它为前两条显示一条黑线和一条红线,这很好。但最后两点显示为红线而不是蓝色圆圈。这是一张显示不正确图例的图片:

在此处输入图像描述

f1f2是表示交点的标量值。

有没有办法调整我的代码以使图例看起来正确?

4

1 回答 1

4

legend将最后两个图显示为红线的原因是您的第二个loglog函数正在返回多个句柄。看起来像一条线,但实际上是多条线叠加。换成你loglog(xax, R1, 'r-');就知道了。h=loglog(xax, R1, 'r-')legend函数按照创建顺序将您提供给它的字符串应用到当前绘图中的每个句柄。发生这种情况是因为R1它是一个标量,而xax它是一个向量。Matlab 的所有绘图功能都以这种方式工作。

以下是我将如何更改相关行:

loglog(xax, R1+zeros(size(xax)), 'r-');

虽然如果它总是一条线,这就足够了:

xax = logspace(1, 4, 2);
loglog(xax, [R1 R1], 'r-');
于 2013-11-10T21:14:43.503 回答