MATLAB Answers

0

Changing color of graphs in MATLAB plot

Hans123 님이 질문을 제출함. 21 Jun 2019
최근 활동 Star Strider 님이 댓글을 추가함. 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

로그인 to comment.

답변 수: 1

Star Strider 님의 답변 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

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?
...and my bad I meant to say 700+ curves, not 7000!
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.

로그인 to comment.



Translated by