Trying to manually set rgb values of cells equal to 0 on contourf figure
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I am attempting to manually set the rgb values on the displayed heat map/2D graph created by contourf, taking data from my input array (a 33477x13 array) to a dark blue if the cell value is equal to 0. How would I do this?
Here is the code:
function [SMPS_data]=Contourf(A)
i=1;
while i<3
start_date = {'5-June-19 0:00','26-May-19 0:01'};
t1 = datetime(2019,5,26,0,0,0);
t2 = datetime(2019,6,4,0,0,0);
dates=t1:minutes(10):t2;
duration_min = numel(dates)*10;
SMPS_timestep = [0:10:duration_min];
colormap(jet)
SMPS_data=[A];
x=zeros(1,length(SMPS_data));
for j=1:length(SMPS_data)
x(1,j) = j/6;
end
y = [11.5; 15.4; 20.5; 27.4; 36.5; 48.7; 64.9; 86.6; 115.5; 154; 205.4; 273.8; 365.2];
z_o=zeros(1,numel(x));
z_r= SMPS_data(1:end,2:end).';
z = [z_o;z_r];
[X,Y] = meshgrid(x,y);
v=logspace(-1,15,500);
[X,Y] = meshgrid(x, y);
figure
[C,h] = contourf(X,Y,griddata(x,y,z,X,Y,'natural'),v);
C(C==0)
set(gca,'yscale','log')
ylim([-1 250]);
str=sprintf('Time (h), t(0) = %s', start_date{2});
xlabel(str)
ylabel('Particle diameter (\mum)')
set(h,'LineStyle','none');
c =colorbar;
caxis([0 2500])
hl = ylabel(c, 'dN/dlogDp #/cm^{-3}');
set(hl, 'Rotation',90);
set(c,'FontSize',12,'LineWidth',1.5)
set(gca,'FontSize',12,'LineWidth',1.5)
set(gca,'TickDir','out')
set(gca,'XTickMode','auto')
%set(gca, 'XTick',[0 6 12 18 24 30 36 42 48 54])
set(gca, 'XTickLabel',{'5/26','5/27','5/28','5/29','5/30','5/31','6/1','6/2','6/3','6/4'})
set(gca, 'YTick',[10 30 50 100 150 200])
set(gca, 'YTickLabel',{'10','30','50','100','150','200'})
box off
i=i+1;
end
end
0 comentarios
Respuestas (1)
Austin M. Weber
el 8 de Feb. de 2024
I don't know if you are still active, but there is an easy way to do this, as long as your data does not already contain any NaN values.
For heatmaps, you can use standardizeMissing to convert all zeros into missing values, then manually set the color of the missing values:
% Setting random number generation seed so that these results can be reproduced
rng(1)
% Creating data and standardizing all zeros to missing
heatmapdata = round(rand(10,10).*10);
heatmapdata = standardizeMissing(heatmapdata,0);
% Create figure
figure(1)
hm = heatmap(heatmapdata);
colormap("spring") % Spring does not have any blues, so it makes it easy to locate the zeros
% Color the "zeros" (which are now missing) dark blue
darkblue = '#00035b';
hm.MissingDataColor = darkblue;
hm.MissingDataLabel = 'Data = 0';
A very similar process can be done for making a filled contour map:
% Create some data
contourdata = round(rand(25,25).*10);
contourdata = standardizeMissing(contourdata,0);
% Plot the data
figure(2)
cf = contourf(contourdata,'EdgeColor','none');
colormap("spring")
colorbar
% Color the "zeros" (which are now missing) to darkblue by changing the
% background color of the axes
set(gca,'Color',darkblue)
0 comentarios
Ver también
Categorías
Más información sobre Geographic Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!