MATLAB Answers

Changing color of graphs in MATLAB plot

32 views (last 30 days)
Hans123
Hans123 on 21 Jun 2019
Commented: Star Strider on 21 Jun 2019
I have a basic plot command that is in a loop, and each iteration spits out a graph on the same figure.
There would be about 7000+ plots overlayed on the same figure. I do not inted to use legend, rather I want to use the jet colormap to show the order.
how can I include the jet colormap function in the below command that plots the graphs
plot(timevals,B{k}(:,2),'LineWidth',1.1)
The current figure I get for about 10 iterations is that, I want consitent color changes
jet.PNG

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 21 Jun 2019
With 7000+ curves, it is unlikely that you are going to be able to distinguish them regardless of the colormap you use.
I would instead use plot3, and offset them slightly in the x-direction, leaving the others unchanged.
Example:
data = rand(5, 20); % Data Vector Matrix
t = linspace(0, 1, size(data,2)); % Time Vector Matrix
x = (0:size(data,1)-1)' * ones(1,size(data,2)); % Offset Vector Matrix
figure
plot3(x, t, data)
grid on

  3 Comments

Hans123
Hans123 on 21 Jun 2019
Thanks again Star Strider, really appreciate the help. But if I also have a similar question with aorund 70 iterations - only 70 plots.
Very similar to the previous code,
plot(timevals,B{k}(:,2),'LineWidth',1.1)
How I can incoparate the jet colormap into this?
Hans123
Hans123 on 21 Jun 2019
...and my bad I meant to say 700+ curves, not 7000!
Star Strider
Star Strider on 21 Jun 2019
As always, my pleasure.
You are still not going to be able to distinguisn 700 curves, and even 70 are going to be a challenge.
With 70 curves, distinguishing the colormap will be easier.
Apparently, it is only possible to specify one color per line object, so a loop is the only way I can find to do what you want:
cm = colormap(jet(70));
data = exp(-(0:199)/150)+randn(70, 200)*0.01; % Data Vector Matrix
t = linspace(0, 1, size(data,2)); % Time Vector Matrix
x = (0:size(data,1)-1)' * ones(1,size(data,2)); % Offset Vector Matrix
figure
hold all
for k = 1:size(data,1)
plot3(t, x(k,:), data(k,:), 'Color',cm(k,:));
end
hold off
grid on
view(30,30)
xlabel('Time')
This is for 70 curves. Make the appropriate changes for different numbers of them.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by