【问题标题】:Legend for a single point in Matlab plotMatlab图中单点的图例
【发布时间】:2013-11-10 20:17:12
【问题描述】:

我在使用 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 是表示交点的标量值。

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

【问题讨论】:

  • 当您的代码不可运行时,很难调试。 saxR1 的大小是多少?第二个loglog 函数绘制了多少条红线?
  • 嗯,问题是我正在读取文件以获取积分并进行计算,所以我没有发布所有代码。 xax 是一个 1000 点的对数空间向量,而 R1 只是一个值。所以一条红线。

标签: matlab matlab-figure


【解决方案1】:

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-');

【讨论】:

  • 谢谢!实际上,我不知道手柄。我使用了你提到的最后一种方法,现在图例工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 2013-02-12
  • 2013-12-17
  • 2015-09-29
相关资源
最近更新 更多