How to map a vector to a colourmap ?
Ältere Kommentare anzeigen
Hello,
I am trying to map a vector containing energy of modes of a dynamic system to a vector containing colour values so that when i plot this I want the markers to have the colour corresponding to their energy levels. For example the highest energy value will correspond to a Solid black colour and the next one a little less black then the others have grey and the least energy ones have white colour (thus making them invisible in the plot).
Best Regards
Harish
2 Kommentare
Adam
am 24 Mär. 2020
Does regular plotting and applying a colourmap not give what you want?
e.g.
A = magic(25);
figure; imagesc( A );
colorbar
You can certainly do mapping onto a colourmap manually and produce a true RGB image if you wish, but it is obviously more effort and data cursor information would reflect that it is now RGB rather than just give you the raw value.
Alternatively you can manipulate your data in some way if a straight linear mapping onto the colourmap is not what you want. Or create a custom colourmap.
Hard to say without seeing an example though.
Harish Rajan
am 24 Mär. 2020
Akzeptierte Antwort
Weitere Antworten (1)
Image Analyst
am 24 Mär. 2020
Do you mean where the marker color is the color taken from the "energy" array, like this:
% Define our data.
theta = linspace(0,(2*pi),30);
x=cos(theta);
y=sin(theta);
energy = linspace(0,1000,30);
numPoints = length(x);
% Get a colormap, a unique color for every energy level
cmap = jet(numPoints); % Initialize jet colormap.
% Get energy in the range 1 to numPoints so we can use that to get a row from the colormap.
qEnergy = imquantize(energy, numPoints);
for k = 1 : numPoints
% Get the color for this energy level:
thisEnergy = qEnergy(k);
thisColor = cmap(thisEnergy);
fprintf('Plotting point #%d at (%.3f, %.3f) with color (%.3f, %.3f, %.3f)\n',...
k, x(k), y(k), cmap(k, 1), cmap(k, 2), cmap(k, 3));
plot(x(k), y(k), '.', 'Color', cmap(k, :), 'MarkerSize', 40);
hold on;
end
grid on;
axis square;
fprintf('Done running %s.m ...\n', mfilename);

4 Kommentare
Harish Rajan
am 24 Mär. 2020
Harish Rajan
am 30 Mär. 2020
Image Analyst
am 30 Mär. 2020
Harish, you can see how I defined the colormap before the loop. You can make it be anything you want. You can also see how I said the 'MarkerSize' was 40 in the call to plot(). You can change that 40 to be whatever you want. It can even be a function of k, the loop iterator if you want.
Harish Rajan
am 30 Mär. 2020
Kategorien
Mehr zu Red finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!