when Plotting multiple lines using plot, how do adjust line color with jet?

조회 수: 7 (최근 30일)
You can pass a 2d Vector to plot and create multiple lines. I want to specify the color in vector format as well but cant figure out how to do it without a for loop. As an example I set up x and y as 2d matricies which describe concentric circles of radius 1 through 5. You can pass x and y directly to plot and it will create the desired plot with the default colors. I just want to adjust the colors using the jet function, but it seems it can only be done with a for loop. Is this possible?
R = 1:5; %Radius [1x5]
th = [0:360].'; %Theta [361x1]
x = cosd(th)*R; % [361x5]
y = sind(th)*R; % [361x5]
cmap = jet(length(R)); % [5x3]
figure
plot(x,y)
% plot(x,y,'Color',cmap.') %? This doesnt work!!
figure
hold on
for kk = 1:length(R)
plot(x(:,kk),y(:,kk),'Color',cmap(kk,:).')
end

채택된 답변

Walter Roberson
Walter Roberson 2021년 7월 12일
In a release after yours, R2019b, it became possible to use the new colororder() function in order to change the color of lines, including existing lines.
In your release (R2017b -- and thank you for including that information!), what you should do is set the axes ColorOrder property before drawing the lines:
R = 1:5; %Radius [1x5]
th = [0:360].'; %Theta [361x1]
x = cosd(th)*R; % [361x5]
y = sind(th)*R; % [361x5]
cmap = jet(length(R)); % [5x3]
fig = figure();
ax = axes(fig);
ax.ColorOrder = cmap;
hold(ax, 'on')
plot(ax, x,y)
hold(ax, 'off')
Be sure to have "hold" turned on for the axes, as ColorOrder is one of the properties that is replaced when MATLAB does its default plot initialization.

추가 답변 (0개)

카테고리

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

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by