matlab plot three different colors for three different change (red, yellow, blue)

1 次查看(过去 30 天)
In https://www.amcharts.com/demos/line-different-colors-ups-downs/ ,
it describes plotting different colors for up and downs. How can I do the same for matlab? I attach an example
plot([1 2 3 4 5 6 7 8 9 10], [5 5 7 5 2 5 5 8 9 2])
which involves no change as well. I want to have yellow for ups and blue for downs, and red for no change.

回答(2 个)

KSSV
KSSV 2017-7-17
x = [1 2 3 4 5 6 7 8 9 10] ;
y = [5 5 7 5 2 5 5 8 9 2] ;
figure
hold on
for i = 1:length(x)-1
m = (y(i)-y(i+1))/(x(i)-x(i+1)) ;
if sign(m)==0
plot(x(i:i+1),y(i:i+1),'r') ;
elseif sign(m)==-1
plot(x(i:i+1),y(i:i+1),'b') ;
elseif sign(m)==1
plot(x(i:i+1),y(i:i+1),'y') ;
end
end

Stephen23
Stephen23 2017-7-17
编辑:Stephen23 2017-7-17
This is MATLAB, so there is no need to use ugly loops or write complicated code. Simple is always best.
X = [1,2,3,4,5,6,7,8,9,10];
Y = [5,5,7,5,2,5,5,8,9,2];
D = [NaN,diff(Y),NaN]
idz = D(1:end-1)==0 | D(2:end)==0;
idp = D(1:end-1)>0 | D(2:end)>0;
idn = D(1:end-1)<0 | D(2:end)<0;
plot(X,Y+0./idz,'r', X,Y+0./idp,'y', X,Y+0./idn,'b')

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by