如何在MATLAB中的每次迭代中更改绘图的颜色?

时间:2013-04-26 12:25:35

标签: matlab plot legend

以下是我的matlab代码的一部分。如图所示,我想在一个图中绘制8条曲线。但我想用一种独特的颜色制作每条曲线。我还想更改图例,以便为每个i更改图例。

例如,对于i = 1,图例将为gho-1,i = 2 gho-2,依此类推。我希望它是自动的,因为我有时会从ex :( i = 1:20)改变i

for i=1:8
.
.
.
plot(b,r,'b');
legend(['qho-',num2str(i)]);    
hold on
end

我该怎么做?

你好,

我有其他问题: 如果我有以下

for i=1:8
.
b1=(1:3,:)
b2=(3:6,:)
figure(1);plot(b1,r,'*');
figure(2);plot(b2,r,'*');

Leg{i} = ['qho-',num2str(i)];    

end
legend(Leg)

我只获得了最后一个数字的颜色图例。不是两个.. 我怎么解决这个问题?!

再次感谢

2 个答案:

答案 0 :(得分:8)

只需使用hold all代替hold on,并将图例标签放在单元格数组中

hold all
for i=1:8
    .
    .
    .
    plot(b,r);

    Leg{i} = ['qho-',num2str(i)];    

end
legend(Leg)

请参阅此问题,例如:Sparse matrix plot matlab


注意:

Matlab R2014b以后hold on已被修改为像hold all一样,即每次绘制一个图时都会更改图的颜色。 The docs声明将来的版本中将删除hold all语法。

答案 1 :(得分:7)

如下:

figure, hold on
N = 8;
h = zeros(N,1);    %# store handle to line graphic objects
clr = lines(N);    %# some colormap
for i=1:N
    %# plot random data
    y = cumsum(randn(100,1));
    h(i) = plot(y, 'Color',clr(i,:));
end
hold off
legend(h, num2str((1:N)','gho-%d'))    %# display legend

plot