使用矢量给定的参数在一个图中绘制函数(颜色问题)

时间:2019-01-09 17:12:04

标签: matlab

我想绘制由矢量$ A $给定的四个斜率不同的直线:

A=[1.1,2.3,7.9];
k=0;
x=-1:0.01:1;
for n=1:3
    plot(x,A(n)*x)
    hold on
end

但是,事实证明所有行都是相同的颜色(蓝色)。我如何以不同的颜色绘制它们,但仍使用for-end命令? (当向量$ A $很大时,这是必需的...)

3 个答案:

答案 0 :(得分:1)

实际上,可以通过在for-end循环之前放置“全部保留”来解决此问题:

A=[1.1,2.3,7.9];
k=0;
x=-1:0.01:1;
hold all
for n=1:3
    plot(x,A(n)*x)
end

我正在使用2013a。不确定其他版本的Matlab是否具有相同的问题和解决方案。

答案 1 :(得分:1)

您可以制作一个颜色图(例如lines)以指定所有不同线条的颜色。通过在行的句柄上使用set,您不必使用for循环。

A=[1.1,2.3,7.9];
x=-1:0.01:1;

cmap = lines(numel(A));
p = plot(x,A.'*x);

set(p, {'color'}, num2cell(cmap,2));

或者,如果您确实想使用for循环,则可以在每次循环迭代时使用相同的颜色图设置颜色:

figure()
axes;
hold on;

cmap = lines(numel(A));

for n = 1:numel(A)
    plot(x,A(n)*x, 'Color', cmap(n,:));
end

答案 2 :(得分:0)

使用以下内容

A=[1.1 2.3 7.9];
x=[-1 1]; % use this instead of x=-1:0.01:1
line(x,A'*x);

结果:

enter image description here

此外,如果您希望手动操作颜色,请使用以下代码:

A=[1.1 2.3 7.9];
L=length(A);
col_mat=rand(L,3); % define an arbitrary color matrix in RGB format
x=[-1 1]; % use this instead of x=-1:0.01:1
p=line(x,A'*x);
%% apply the colors
for i=1:L
    p(i).Color=col_mat(i,:);
end