我想绘制由矢量$ 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 $很大时,这是必需的...)
答案 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);
结果:
此外,如果您希望手动操作颜色,请使用以下代码:
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