how to generate colors for line plot

205 visualizaciones (últimos 30 días)
Yu Li
Yu Li el 26 de Nov. de 2018
Editada: Vencel Kozma el 5 de Dic. de 2022
I have a set of lines to plot in one figure. the first line is experimental data so I want to plot with 'black', the result are simulation result, I would like to plot with different colors.
the problem is that, the number of these simulation result is not clear, some times, only 2, some times, about 10.
what I did before is to determine some customized color:
cm{1}='r';
cm{2}='b';
cm{3}='m';
then,
for j=1:1:length(P)
P_tmp=P{j};
plot(P_tmp(:,1),P_tmp(:,2),['-',cm{j}]);
hold on
end
however, the color names to determine cm is limited, when number of plot are large, I do not have enough color names to customize parameter 'cm'.
is there any way to solve this problem?
Thanks!
Yu

Respuestas (2)

Jim David
Jim David el 26 de Nov. de 2018
Different colors for an indefinite number of plots can be achieved by using the rand function to set the RGB values for the color for the plot. Here is an example that demonstrates how this can be done.
x = linspace(0,10,150);
y = cos(5*x);
figure
hold on
for i = 1:10
y = i*cos(i*x);
plot(x,y,'Color',[rand,rand,rand])
end
hold off
A further point of interest could be MATLAB's default ColorOrder. Here is the documentation for the same:
This could be used in conjunction with the rand function to increase the number of colors MATLAB cycles through.

Vencel Kozma
Vencel Kozma el 5 de Dic. de 2022
Editada: Vencel Kozma el 5 de Dic. de 2022
I also tried this, a deterministic way to create colour. That being said, the number of colours is limited:
Colmat = hsv(); % hsv---> Colourmap, which has a wide range of colours.
figure()
for k = 1:length(Data)
Colour = Colmat( mod(7*(k-1), 64)+1, :)... ---> Colour
*(0.9-0.3*( mod(floor(7*(k-1)/64), 3) )) % --->Brightness
% Insert plot here!
end

Categorías

Más información sobre Colormaps en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by