如何在Matlab图中标注线条

时间:2018-03-25 12:04:30

标签: matlab matlab-figure

我在同一个图表中写了17行代码图。我想标记图表上的所有行。你可以帮帮我吗?

pivot

Figure

我想确定哪一个值等于哪一行。

enter image description here

1 个答案:

答案 0 :(得分:3)

这通常由annotation完成,我认为这是手动完成的。由于您有很多图表而且空间不大,我建议您使用text在行尾添加标签。所以在循环中添加(例如ylabel下)

str = sprintf('   n = %.2f',n);
text(x(end),H(end),str);

这将导致

annotation ugly

正如您所看到的那样,开头有重叠,因为曲线彼此接近。您可以按如下方式对第一个稍微偏移进行硬编码:(注释与图形有关,因此我认为可以对此进行硬编码)

if n == 0
    text(x(end),H(end)+.005,str);
else
    text(x(end),H(end),str);
end

结果:

annotation okayish

您的代码的一般评论:

  • 您不能使用w符号,因此请删除syms w
  • 你不能使用k所以也可以摆脱它
  • wx可以移出循环,w/wn可以替换为x

你也可以不用循环写这个:

wn=4000; %rad/s

w=0:10:1884;
x=w/wn;
n=0:0.05:0.8;
N = length(n);
H=1./sqrt((1-(ones(N,1)*x).^2)+(2*n.'*x).^2);

plot(x,H)
title('Time versus Response Graph of n');
xlabel('Time(s)');
ylabel('Response(m)');

str = sprintf('   n = %.2f\t',n);
strs = strsplit(str,'\t');
offset = zeros(N,1);
offset(1)=.005;
offset(2)=.001;
text(x(end).*ones(N,1),H(:,end)+offset,strs(1:N));

这样可以更容易地调整不同曲线的偏移。 (注意我已为第二条曲线添加了一个偏移量,并导致下图)

annotation good `