Specific color corresponding to specific data using contourf colormap
5 次查看(过去 30 天)
显示 更早的评论
Hello,
I would like to know if we can give a specific color to a specific data and plot them on Matlab ?
For example, I have a 3000x3000 matrix with x and y axis, I need to plot a range of data in a specific color.
I've already generated the map with, but the colors are random
this is my code :
A= data;
figure;
[v,x] = meshgrid(v,x);
contourf(v,x,A)
figure;
%colourRGB = hsv(jet);
c=colormap(jet); %jet
L=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
[cdd hc]=contourf(v,x,A,[-0.01 L]);
Recolor_contourf(hc,c,L,'vert');
I want for example if A(x,y)==0.07 the colormap will be green ...
I can give more details.
Kind regards,
S.C
6 个评论
DGM
2021-5-13
I'm still not really sure what you're aiming for, but consider:
% make some simple test data
x = linspace(0,1,100);
y = x.';
z = (x+y)/2;
% this is a simple colormap with 10 colors
% it looks pretty terrible, but they're distinct
% and recognizable
cm = [1 0 0;
1 1 0;
0 1 0;
0 1 1;
0 0 1;
1 0 1;
0.8 0 0;
0.8 0.8 0;
0 0.8 0;
0 0.8 0.8];
c=colormap(cm);
% the levels vector also has 10 levels
L=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];
[cdd hc]=contourf(x,y,z,[-0.01 L]);
Now each band on the contour plot has a distinct color directly represented by the colormap. You could build whatever colormap you want to assign to each level. If you want to use jet or another built-in colormap the same way, specify the number of levels so that it lines up with your levels vector:
c=colormap(jet(10)); % or however many levels you have
Or you could modify a built-in map if you want to highlight certain things:
cm = jet(10); % use jet
cm(7,:) = [1.0000 0.2726 0.6517]; % but make one band pink
c=colormap(cm);
Is this even getting close to what you need?
回答(2 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Colormaps 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!