用matlab画图颜色变化的问题

我现在有一组数值y,想在用画图函数把它曲线画出来的时候,曲线颜色可以根据它值的大小变化,比如y(i)=1时它的Color是[0 1 0],y(j)=2时它的Color是[1 0 0]。附上我自己用plot画的程序,它只能一个点一个点画,而我是想画整个的曲线。
x=[1 2 3];y=[3 4 5];col=[];
for i=1:length(y)
if y(i)<=3
col=[col;[0 1 0]];
elseif y(i)<=4
col=[col;[0 0 1]];
else
col=[col;[1 0 0]];
end
end
for i=1:length(y)
h=plot(x(i),y(i),'.');
set(h,{'Color'},{col(:,i)})
end

第1个回答  2011-04-07
x=[1 2 3];y=[3 4 5];col=[];
for i=1:length(y)
if y(i)<=3
col=[col;[0 1 0]];
h1=plot(x(:,1:i),y(:,1:i));
set(h1,{'Color'},{col});
a1 = i;
hold on
elseif y(i)<=4
col=[[0 0 1]];
h2=plot(x(:,a1:i),y(:,a1:i));
set(h2,{'Color'},{col});
a2 = i;
hold on
else
col=[[1 0 0]];
h3=plot(x(:,a2:i),y(:,a2:i));
set(h3,{'Color'},{col})
end
end
希望能够帮助到你追问

您给提供的方法也是,点多了就不对了,同样点的颜色也有错的,继续泪奔。

本回答被提问者采纳
第2个回答  2011-04-07
在每个col=[col ];后面加上hold on;
x=[1 2 3];y=[3 4 5];col=[];
for i=1:length(y)
if y(i)<=3
col=[col;[0 1 0]];
hold on;
elseif y(i)<=4
col=[col;[0 0 1]];
hold on;
else
col=[col;[1 0 0]];
hold on;
end
end
for i=1:length(y)
h=plot(x(i),y(i),'.');
set(h,{'Color'},{col(:,i)})
end追问

点多了就不对了,比如x=[1 2 3 4 5];y=[ 2 3 6 2 1];而且点的颜色也不对,泪奔

相似回答
大家正在搜