Colorbar, display regular intervals
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Francesco Marchione
le 24 Sep 2021
Réponse apportée : Samay Sagar
le 16 Fév 2024
I would like to have the colourbar displaying values for regular intervals: that is, I would like to have the colourbars displaying both extremes (max and min) and a fixed number of intermediate values (intervals), automatically.
I attach the xslx file
T1 = readtable('SLJ20 PEEL.xlsx', 'VariableNamingRule','preserve');
% First10Rows = T1(1:10,:)
% T1Sz = size(T1)
VarNames = T1.Properties.VariableNames;
N = 50; % Interpolation Matrix Size
xv = linspace(min(T1{:,1}), max(T1{:,1}), N); % Create Vector
yv = linspace(min(T1{:,2}), max(T1{:,2}), N); % Create Vector
[Xm,Ym] = ndgrid(xv,yv); % Create Interpolation Matrices
Zm = griddata(T1{:,1}, T1{:,2}, T1{:,3}, Xm, Ym); % Interpolate
figure
surfc(Xm, Ym, Zm)
grid on
shading interp
set(0, 'DefaultTextInterpreter', 'latex')
hcb = colorbar;
xlabel(hcb,'[{\it Pa}]');
hcb.Label.Interpreter = 'latex';
set(hcb,'TickLabelInterpreter','latex')
colormap(jet(50))
title ('EPX1','FontSize',13,'interpreter', 'latex')
set(0, 'DefaultTextInterpreter', 'latex')
hcb = colorbar;
hcb.TickLabelInterpreter='latex';
% ColorbarRulerProperties = hcb.Ruler
hcb.Ruler.TickLabelFormat = '%.2f';
set(hcb, 'Ticks', sort([hcb.Limits, hcb.Ticks]))
set(gca,'TickLabelInterpreter','latex')
% tix = hcb.Ticks;
% expstr = @(x) [x(:).*10.^ceil(-log10(abs(x(:)+(x==0)))) floor(log10(abs(x(:)+(x==0))))];
% tixexp = expstr(tix(:))
% tixexplbl = compose('%.2f \\times 10^{%2d}',[tixexp(:,1) fix(tixexp(:,2))])
% hcb.TickLabels = tixexplbl;
xlabel('{\it x} [{\it mm}]')
ylabel('{\it y} [{\it mm}]')
zlabel('{\it} Shear stress [{\it MPa}]')
0 commentaires
Réponse acceptée
Samay Sagar
le 16 Fév 2024
To have the colorbar display both extremes (max and min) and a fixed number of intermediate values at regular intervals automatically, you can set the “Ticks” property of the “colorbar” to a vector of values that spans from the minimum to the maximum of the data range, divided into equal intervals. You can do this using the “linspace” function.
Read more about “linspace” here:
Here's how you can modify your existing code to achieve this:
T1 = readtable('SLJ20 PEEL.xlsx', 'VariableNamingRule','preserve');
VarNames = T1.Properties.VariableNames;
N = 50;
xv = linspace(min(T1{:,1}), max(T1{:,1}), N);
yv = linspace(min(T1{:,2}), max(T1{:,2}), N);
[Xm,Ym] = ndgrid(xv,yv);
Zm = griddata(T1{:,1}, T1{:,2}, T1{:,3}, Xm, Ym);
figure
surfc(Xm, Ym, Zm)
grid on
shading interp
set(0, 'DefaultTextInterpreter', 'latex')
% Colorbar settings
hcb = colorbar;
xlabel(hcb,'[{\it Pa}]');
hcb.Label.Interpreter = 'latex';
set(hcb,'TickLabelInterpreter','latex')
colormap(jet(50))
title ('EPX1','FontSize',13,'interpreter', 'latex')
set(0, 'DefaultTextInterpreter', 'latex')
hcb = colorbar;
hcb.TickLabelInterpreter='latex';
% Define the number of intervals for the colorbar
numIntervals = 5;
cmin = min(Zm(:));
cmax = max(Zm(:));
ticks = linspace(cmin, cmax, numIntervals+1);
hcb.Ticks = ticks;
hcb.TickLabels = arrayfun(@(v) sprintf('%.2f', v), ticks, 'UniformOutput', false);
set(gca,'TickLabelInterpreter','latex')
xlabel('{\it x} [{\it mm}]')
ylabel('{\it y} [{\it mm}]')
zlabel('{\it} Shear stress [{\it MPa}]')
Read more about “Ticks” and “colobar” here:
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Annotations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!