MATLAB: Cannot plot a color gradient (Data must be a single matrix Y or a list of pairs X,Y.)

color gradientplot

Hi, i want to plot on the same graph 30 curves with colour gradient decreasing from the first to the last curve (from yellow to red). I have tried this code :
c = colormap(jet(1000))
figure
plot((1:num_images),augm(1:30,1:num_images),'Color',c(600:10:880,:)','-')
  • My variable augm is a matrix of num_images*30.
  • When I run the program without the color part ('Color',c(600:10:880,:)'), it runs perfectly fine but i do not have my gradient of colours…
I think I did not understand completely the 'Color' function.
Could you help me with this ?
Thank you !

Best Answer

When you use the 'color' name/value pair, it applies to all lines that you drew in the single plot() call. It is not possible to use 'color' to give different colors for different lines.
If you draw multiple lines with one plot() call, then to give them different RGB colors, you need to loop through the graphics handles setting the Color property.
num_plot = 30;
h = plot(augm(1:num_plot,1:num_images) .', '-'); %make the different plots into columns
color_idx = 600 + 10 * (0:num_plot-1);
for K = 1 : length(h)
set(h(K), 'Color', c(color_idx(K),:) );
end