How can I plot 18 lines in different colors on a single plot?

조회 수: 46 (최근 30일)
ANDREA
ANDREA 2023년 1월 10일
편집: DGM 2023년 1월 10일
Hi everyone!
I have to plot 18 different functions of time, all in one single figure. How can i assign 18 different colors? (i work with matlab 2014)
Thanks.

채택된 답변

DGM
DGM 2023년 1월 10일
편집: DGM 2023년 1월 10일
In versions prior to R2019b, you can always set the axes property without the colororder() function.
% some fake data
x = linspace(0,1,100);
y = bsxfun(@plus,rand(18,100),(1:18).'); % i'm assuming we're in an older version
% set the axes colororder
CT = jet(18); % not that this is a good choice
set(gca,'colororder',CT);
% plot things
hold on
plot(x,y)
Of course, like @Bjorn Gustavsson says, unless you do something beyond this (e.g. using a carefully crafted map or using other line properties), putting 18 curves in the same plot can be a readability problem, especially if they overlap or the results need to be printed. For example:
clf
% exact same colors, but data series don't have sequential offsets
x = linspace(0,1,100);
os = (1:18).';
y = bsxfun(@plus,rand(18,100),os(randperm(18)));
% set the axes colororder
CT = jet(18); % not that this is a good choice
set(gca,'colororder',CT);
hold on
hp = plot(x,y);
% which curve is data 4?
legend(hp,'location','eastoutside')
See also:

추가 답변 (2개)

Bjorn Gustavsson
Bjorn Gustavsson 2023년 1월 10일
For that type of tasks I have had good use of the cmlines-function in the colormap-and-colorbar-utilities toolbox on the file exchange. With that it is as simple as:
ph = plot(randn(18,18));
colormap(turbo)
cmlines(ph(1:12))
colormap(copper)
cmlines(ph(13:18))
(unasked for advice: sometimes my plots become more legible if I also use linewith and linestyle to differentiate between lines)
HTH

the cyclist
the cyclist 2023년 1월 10일
편집: the cyclist 2023년 1월 10일
If your version of MATLAB is 2019b or later, I suggest the colororder function. (I see that you mention an older version, so this may be more for other folks who come across this question.)
And for that many colors, I would recommend using a utility like this one for defining maximally distinguishable colors (and/or using different plotting symbols and line styles.)
  댓글 수: 1
Bjorn Gustavsson
Bjorn Gustavsson 2023년 1월 10일
Hopefully there are some more "natural" ordering and/or grouping of the function to plot, and then it might be way better to one distinct colormap per group of curves to guide the viewer.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by