Colormap for multiple plots

19 Ansichten (letzte 30 Tage)
Sha
Sha am 28 Sep. 2020
Kommentiert: Image Analyst am 29 Sep. 2020
Hi,
I have a matrix K of size N x n and I plot the values of K on the same figure by using "hold on" n plots with N values each.
I would like to use a color map (from -1 to 1 , Blue to Red) in the following way: the n-th plot has color "0.4" or yellow if the first value of the column K(1,n) = 0.4 and so on.
How can I achieve this please?
Here is the code I have been trying to play with ( in particular adding the option 'Color' then 'jetcustom' in the plot options returns an error, I was trying to do like in this answer MathWorks Answer)
colormap(jet(n));
jetcustom=jet(n);
figure
x=1:k;
for i=1:n
y=K(:,i);
I=ismember(i,A);
J=ismember(i,B);
if I==1
plot(x,y,'--');
elseif J==1
plot(x,y);
end
hold on
end
xlim([1 k]);
ylim([-1.5 1.5])
colormap(jet(10))
cb=colorbar;
caxis([-1 1])
  1 Kommentar
Sha
Sha am 28 Sep. 2020
I used both answers below! Thank you!
jetcustom=jet(n);
r1=K(1,:);
colors = interp1(linspace(-1, 1, n), jetcustom, r1.');
figure()
set(gca, 'ColorOrder', colors , 'NextPlot', 'replacechildren');
x=1:k;
for i=1:n
y=K(:,i);
I=ismember(i,Con);
J=ismember(i,Ex);
if I==1
plot(x,y,'--');
elseif J==1
plot(x,y);
end
hold on
end
xlim([1 k]);
ylim([-1.5 1.5])
colormap(jet(10))
cb=colorbar;
caxis([-1 1])

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Image Analyst
Image Analyst am 28 Sep. 2020
See my attached demo.
  4 Kommentare
Sha
Sha am 28 Sep. 2020
Thanks, I can and I will, I just wanted to accept both answers as I used both to solve my problem but MathWorks doesn't allow me to do so;
Image Analyst
Image Analyst am 29 Sep. 2020
Correct. However, if you like other answers, you can also award them the same number of "reputation points" (as an Accept) by clicking the "Vote" thumbs up icon. Thanks again. Feel free to come back anytime.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Ameer Hamza
Ameer Hamza am 28 Sep. 2020
Bearbeitet: Ameer Hamza am 28 Sep. 2020
colormap is not used for deciding the color of plot() lines. For that, you need to modify ColorOrder property. Something like this should work.
jetcustom = jet(n);
r1 = K(1, :); % first row decide the colors
colors = interp1(linspace(-1, 1, n), jetcustom, r1.');
figure()
ax = axes()
ax.ColorOrder = colors; % colororder(ax, colors)
x=1:k;
for i=1:n
y=K(:,i);
I=ismember(i,A);
J=ismember(i,B);
if I==1
plot(x,y,'--');
elseif J==1
plot(x,y);
end
hold on
end
xlim([1 k]);
ylim([-1.5 1.5])
colormap(jet(10))
cb=colorbar;
caxis([-1 1])
  2 Kommentare
Sha
Sha am 28 Sep. 2020
Thank you very much seems like a great idea to fix the first line for the colors, but sadly I still get the same figure. Any idea why the plot is not taking into account the ColorOrder?
Sha
Sha am 28 Sep. 2020
Thank you it worked with this slight modification:
jetcustom=jet(n);
r1=K(1,:);
colors = interp1(linspace(-1, 1, n), jetcustom, r1.');
figure()
set(gca, 'ColorOrder', colors , 'NextPlot', 'replacechildren');

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by