在matlab中将后续绘图添加到图例中

时间:2017-04-14 11:37:34

标签: matlab plot

我目前正在进行迭代过程,我创建一个图形,添加一个图,然后附加一个图例项。我这是作为一系列命令执行此操作,但已在下面的脚本中收集了所有命令。请注意,这不能是一个脚本,因为实际的绘图取决于我必须物理迭代的外部进程,因为我无法控制它们。

>> x = [0:1:10]
>> y1 = []
>> y2 = []
>> y3 = []
>> figure
>> hold on

>> for i = 1:size(x,2)
    y1(i) = x(i)^2
end

>> plot(x,y1,'b')
>> legend('x^2')

>> for i = 1:size(x,2)
    y2(i) = 2*x(i)^2
end

>> plot(x,y2,'r')
>> legend('2*x^2')

>> for i = 1:size(x,2)
    y3(i) = 3*x(i)^2
end

>> plot(x,y3,'g')
>> legend('3*x^2')

正如预期的那样,这会创建一个包含感兴趣的三个函数的图,但是一个仅包含最后一个项的图例。我对此并不满意,因为当我作为一系列命令执行此操作时,我必须每次使用旧项目和新项目创建新图例。要获得所需的结果,必须按如下方式修改命令

>> x = [0:1:10]
>> y1 = []
>> y2 = []
>> y3 = []
>> figure
>> hold on

>> for i = 1:size(x,2)
    y1(i) = x(i)^2
end

>> plot(x,y1,'b')
>> legend('x^2')

>> for i = 1:size(x,2)
    y2(i) = 2*x(i)^2
end

>> plot(x,y2,'r')
legend('x^2','2*x^2')

>> for i = 1:size(x,2)
    y3(i) = 3*x(i)^2
end

>> plot(x,y3,'g')
>> legend('x^2', 2*x^2','3*x^2')

将最近添加的绘图附加到当前图例而不必重写所有以前的内容的有效方法是什么?感谢。

1 个答案:

答案 0 :(得分:1)

你不能只是附加到一个传奇,但你可以回想起它,而不必知道之前发生的事情。这取决于您将图例分配给变量,并使用其String属性来调用以前的条目。

% define plotting variables here
x=0:0.1:1; y1=x.^2; y2=2*x.^2; y3=3*x.^2;
% initialise figure   
figure; hold on;
% plot 1
plot(x, y1, 'b');
L = legend('x^2');
% plot 2
plot(x, y2, 'r');
L = legend([L.String, {'2*x^2'}]);
% plot 3
plot(x, y3, 'k');
L = legend([L.String, {'3*x^2'}]);

结果:

plot