How can I plot a bode diagram with random color?
이전 댓글 표시
What should I add to this code to have a random color?
sys=tf(1,[1 1])
bode(sys)
댓글 수: 1
Paulo Silva
2011년 6월 21일
Please always provide detailed questions so we can help you better and faster
채택된 답변
추가 답변 (4개)
Chirag Gupta
2011년 6월 21일
colors =['r','b','g','y','m','k'];
c = ceil(6*(rand))
bode(sys,colors(c))
This will pseudo randomly choose one of the 6 colors. You can obviously add more colors to the list!
댓글 수: 1
Chirag Gupta
2011년 6월 21일
MATLAB figures default to a particular color. Unless you change that setting or change the colors via code, you will get the same color.
Walter Roberson
2011년 6월 21일
Provided that your systems are not MIMO,
sys=tf(1,[1 1]);
h = bodeplot(sys); %notice this is _not_ bode()
for L = findobj(h,'type','line')
set(L,'Color', rand(1,3));
end
Note: this does not attempt to match colors between the frequency and phase components. You did ask for random color...
I do not have the appropriate toolbox to probe to determine what would be needed to use the same color between the two halves when multiple systems are being drawn on the same plot, or when bode() is used to draw an array of bode plots for a MIMO system.
댓글 수: 4
Walter Roberson
2011년 6월 21일
sys=tf(1,[1 1]);
h = bodeplot(sys); %notice this is _not_ bode()
set(findobj(h,'type','line'),'Color', rand(1,3));
Not valid for MIMO systems or for specifying multiple systems to be plotted simultaneously.
Paulo Silva
2011년 6월 21일
Walter your code allows similar colors on the same axes, would be better to use hold all or make a random list of colors so each new bode plot would use just one color from the list (until the last color and it returns to the first of the list)
Walter Roberson
2011년 6월 21일
If you cannot have similar or duplicate colors, then the colors have not been chosen at random as requires by the original question ;-)
Paulo Silva
2011년 6월 21일
Good point Walter :)
Niels
2013년 5월 2일
1 개 추천
Here is a solution for giving bode plots a different color than and then 'ymcrgbk' and subsequently saving the figure without unwanted changes to the legend.
sys1=tf(1,[1 1]); sys2=tf(1,[1 1 1]);
figure; hold on;
bode(sys1,'b'); bode(sys2,'r');
h1 = findobj(gcf,'Color','b','-and','linestyle','-'); set(h1,'linewidth',1,'color',[.9 .9 .9]);
h2 = findobj(gcf,'Color','r','-and','linestyle','-'); set(h2,'linewidth',2,'color',[.5 .5 .5]);
legend([h1(1) h2(1)],'system 1','system 2')
It is important to assign the first term of the handle (e.g. h1(1)) in order to avoid issues with matrix dimentions (horzcat)
Chirag Gupta
2011년 6월 21일
bode(sys,'r')
You can always write some code to pick a random color from a set of colors that you would like
카테고리
도움말 센터 및 File Exchange에서 Plot Customization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!